No items found.

Import CSV File: AIF method – Part 2

To create this transform we need to copy XML schema file (.xsd) of AttributeTableConfigService and wrap it around an envelope. To define what service we are calling we need to add appropriate header.

We can find .xsd for AttributeTableConfigService by accessing register services:

Register service.

The AiF Services window should pop up.

There we look for our service, select and follow red arrows:

Step-by-step instructions to view schema.

Click View schema:

XML Schema.

Click Save us and save it somewhere where it should be safe. By simple inspection of this schema we can see that imported schema marked by green circle is also there so we need to also save this file. We can do this by selection View imported schemas -> Save as.

The envelope file Message.xsd can be found in:

C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\bin\Application\Share\Include

Also copy this file somewhere because it will be needed.

Ok, now when we have got our three xsd files we need to create transformation library. To do this first open the Visual Studio and then select Visual C# Class Library:

Class Library template in Visual Studio.

Here you need to select .NET Framework 4 and chose an appropriate name for example AttributeImport.

.NET assembly is a dll that contains a special class which when processing a request gets called from the AIF pipeline. This class must implement ITransform interface,e which is located in the assembly file Microsoft.Dynamics.IntegrationFramework.dll. ITransform contains method Transform that contain the code that transform the message.

This assembly file can be added as a reference:

Adding assembly file as a reference.

And then in Browse tab find and select this file and click ok button:

C:\ProgramFiles(x86)\Microsoft Dynamics AX\60\Client\Bin\Share\Include

Now we will make use of those three files that we saved. We need to somehow add them to our project and attach important information from our csv file and then serialize them.

To store them we can create New Folders in our project:

Create new folders in the project.

In order to create classes that can be later added to our project we can use command xsd in Visual Studio Command Prompt.

For Message.cs:

VS Command Prompt.

For AttributeTableConfig_SharedTypes.cs:

Classes are created in XSDFiles destination, now we can add them to the folder in our project by Right Click -> Add -> Existing Item.

Solution Explorer with highlighted configXSD folder.

Now we have access to the AttributeTable and we can start writing code.

Lets start from creating a class ITransform interface that has one method Transform in which will be writing all the code for the correct transformation:

Create new class with one method.

CSV file that we want to import from will be send as a parameter input stream ( input ), from which we can read data using the following code:

StreamReader sreader = new StreamReader(input);

string[ ] dataArray; string lineIn = sreader.ReadLine( );

List<configXSD.AxdEntity_AttributeTable_1> attributeTableList = new List<configXSD.AxdEntity_AttributeTable_1>( );

while (lineIn != null)

{

dataArray = lineIn.Split(‘,’);

lineIn = sreader.ReadLine( );

configXSD.AxdEntity_AttributeTable_1 attributeTable = new configXSD.AxdEntity_AttributeTable_1( );

attributeTable.Name = dataArray[0];

attributeTable.Description = dataArray[1];

attributeTableList.Add(attributeTable);

}

sreader.Close();

Serialization and xml file creation should look as follows:

onfigXDS.AxdAttributeTableConfig item = new configXDS.AxdAttributeTableConfig( );

item.AttributeTable_1 – attributeTableList.ToArray( );

StringWriter stringWriterItems = new StringWriter( );

//serialize to xml

System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(configXSD.AxdAttributeTableConfig));

serializer.Serialize(strongWriterItems, Item);

//put inside the envelope

sharedXSD.EnvelopeType envelope = new sharedXSD.EnvelopeType( );

sharedXSD.HeaderType header = new sharedXSD.HeaderType( )

{

MessageId = Guid.NewGuid( ).ToString(“8”),

Action = @”http//schemas.microsoft.com/dynamics/2011/01/services/AttributeTableConfigService/create“

};

envelope.Header = header;

sharedXSD.BodyType bodyType = new sharedXSD.BodyType( );

//Load item data xml string into an XML DocumentXmlDocument xmlDocumentItems = new XmlDocument( );xmlDocumentItems.LoadXml(strongWriterItems.ToString( ));

//set the body to documentbodyType.MessageParts = xmlDocumentItems.DocumentElement;envelope.Body = bodyType;

//serialize to outputstreamSystem.Xml.Serialization.XmlSerializer mainSerializer = newSystem.Xml.Serialization.XmlSerializer(typeof(sharedXSD.EnvelopeType));mainSerializer.Serialize(output, envelope);

It should be the same as Namespace in AIF services

AIF services.

AttributeTableConfigService is External name and create is the name of the service operation.

This basically concludes this part of the tutorial. In part 3 we will show how to create the File system adapter.

See more

AGA pomaga – poznaj inteligentnego asystenta do przetwarzania zapytań ofertowych: ANEGIS Generative Assistant

Read article
Text Link

Jak z pomocą narzędzi Power Platform, Microsoft Fabric i AI zrealizować plan na cyfrową transformację? ANEGIS Power Center

Read article
Text Link

Obowiązkowy KSeF startuje za 4 miesiące! Umów się na bezpłatne konsultacje i przygotuj swój system na zmiany

Read article
Text Link
Back to all

Let's talk about your project

Let us know what you need: implementation, migration, system development, or a question you’re looking to have answered. We’ll get back to you with a concrete proposal for the next step - not a sales pitch.

Thank you for your message!
Oops! Something went wrong while submitting the form.
Microsoft AI Builder
Microsoft Copilot Studio
No items found.
No items found.
No items found.