Order of attributes in Alternate Key in Dynamics CRM Destination Component in SSIS (KingwaySoft)


Recently we got the below error in one of our SSIS Packages

error

The packages were working fine in one of the environments and were failing in another.

It was throwing an error in one of the lookup fields that was referring to the alternate key. Here the alternate was defined with 2 fields.

As it turned out in another environment the order of the fields was changed for the alternate key field.

We recreated the alternate key field in the proper order of the attributes to fix this.

Hope it helps..

Using CDS/CRM Connection Manager of KingswaySoft’s SSIS Dynamics 365 Integration toolkit in Script Component (SSIS)


Recently for one of our requirements we had to use the CDS/CRM Connection of KingswaySoft’s SSIS Integration Toolkit for Dynamics 365

Below are the steps to be followed –

Drag the Script Transformation component, specify any input columns and inputs / outputs as required.

In the Connection Managers add the connection to Dynamics 365

Click on Edit Script to open the Visual Studio.

Add references to below 3 assemblies. We need to search for the 2 KingswaySoft assemblies in the machine and then add them.

The sample code –


public override void Input0_ProcessInputRow(Input0Buffer Row)
{
var connMgr = this.Connections.CRMConnectionManager;
var connectionString = (string)connMgr.AcquireConnection(null);
var conn = new CrmConnection(connectionString);

var orgService = (IOrganizationService)conn.GetCrmService();

RetrieveRequest retRequest = new RetrieveRequest();
retRequest.ColumnSet = new ColumnSet();
retRequest.ColumnSet.AddColumn("statuscode");
retRequest.Target = new EntityReference("dxc_contract", "dxc_contractnumberinternal", Row.dxccontractnumberinternal);
var response = (RetrieveResponse)orgService.Execute(retRequest);

if (response.Entity != null)
{
// status is closed
if (((OptionSetValue)response.Entity.Attributes["statuscode"]).Value == 282210002)
{
Row.IsApprovedContract = "N";
}
else
{
Row.IsApprovedContract = "Y";
}
}
}

Get all the details here

http://www.kingswaysoft.com/blog/2013/06/24/Writing-Script-Component-or-Script-Task-using-CRM-Connection-Manager

Hope it helps..

Fixed – Assembly must be registered in isolation error while trying to register plugin \ custom workflow activity in Isolation Mode None in Dynamics 365 On Premise


While trying to register our custom workflow activity from Isolation mode – Sandboxed to None for Dynamics 365 On Premise we got the below error

This was because the user through which we were trying to register the plugin in None Isolation Mode using Plugin Registration Tool was not having Deployment Administrator role.

Adding the user to that Deployment Administrator role through Deployment Manager fixed the issue.

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/on-premises/deployment-administrators

Read more about it

https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg309620(v=crm.8)#security-restrictions

Hope it helps..

Advertisements

Scribe Insight Limitation – XML Source doesn’t support repeating sibling nodes


Recently we were evaluating Scribe Insight as our Integration tool for one of our clients. The requirement was to read an xml and create records in Dynamics 365 CE.

The basic structure was something like below, with Account as the parent tag and Payment, Assets, Consumer as repeating child nodes of Account i.e. 1 – n.

However, to our surprise when we started defining the same structure in the XML Component within Scribe Workbench we got the below error message à

—————————

XML Component

—————————

Repeating nodes are not supported for cousins, siblings, etc. Multiple repeating nodes must be related linearly to repeating nodes that already exist. Thus, a new repeating node must be a grandparent, parent, child, grandchild, etc., to an existing repeating node.

—————————

OK

—————————

Interestingly enough the same limitation doesn’t exist in Scribe Online. Had posted something similar few days’ back on that

https://nishantrana.me/2019/01/14/scribe-online-working-with-hierarchical-data-in-dynamics-365-ce/

As we wanted to go with something that works in On Premise setup we went ahead with SSIS Productivity Pack of KingswaySoft https://www.kingswaysoft.com/products/ssis-productivity-pack which had XML components that works perfectly well with this kind of schema or structure.

Hope it helps..

Scribe Online – Working with Upsert Block in Dynamics 365 CE


Continuing our previous posts on Scribe Online, let us look at the Upsert block for Dynamics 365 CRM Connector.

The way it works is à

The Upsert block will have a field called alternatekeyname where we need to provide the name of the alternate key as shown below.

In CRM à

Along with passing the value for the field(s) involved in the alternate key.

The way to achieve the same in Informatica Cloud

https://nishantrana.me/2018/05/18/using-alternate-key-to-upsertupdate-using-dynamics-365-for-sales-connector-of-infomatica-cloud/

Do check out this wonderful article that explains the usage of Upsert Block, Custome Update + Insert and Update/Insert block.

https://www.scribesoft.com/blog/2014/11/updateinsert/

Hope it helps..

Scribe Online – Working with Hierarchical Data in Dynamics 365 CE


In the previous post, we saw how to create XML connection and using it as a source to create records in Dynamics 365 CE.

https://nishantrana.me/2019/01/11/scribe-online-xml-to-dynamics-365-ce/

In this post, we will see how to consume the hierarchical XML data as a source and create parent-child records in Dynamics 365 CE.

Suppose this is our source data with the following relationship

Contact à n Contract à n Asset à n Asset Line

As a first step we need to get the XSD for it, which we will use while defining the XML connection.

https://www.freeformatter.com/xsd-generator.html

Our XML connection

Similarly, add the CRM Connection.

This is how our final mapping will look like

For Query Contact Block (xml) à select Entity as Contact.

For the Include tab, we have selected all the child (tag) entities to be included.

For Create Contact (CRM) block we have mapped the first name and last name field

For For Each Child block select the relationship.

Followed by Create Contract block with following fields mapping.

Here we are setting the contact’s lookup in the contract entity using the Results from Contact Create steps.

Repeat the same steps for remaining child entities like Asset and Asset Line by selecting the relationship in for each child block and in the next create step setting the fields appropriately.

Validate and close the map and run the solution.

On successful run, we can see the records created in CRM

Hope it helps..