Wednesday, August 31, 2016

Mulesoft Microsoft CRM Dynamics Connector TIps


This blog post will review tips using the Mulesoft Microsoft Dynamics Connector to integrate to legacy systems that my team has run across.


Java Cryptography Extensions Not Installed


When doing a test connection for the MS Dynamics Connector inside of Anypoint Studio you may see the following exception - "Test connection failed: Java Cryptography Extensions not installed..."



The user guide states the following as the fix:



    "Install the Java Cryptography Extensions (JCE) package before installing the connector. Download JCE for Java 7 from Oracle’s Java 7 JCE Download site. Download JCE for Java 8 from Oracle’s Java 8 JCE Download site."

This may not resolve the exception above and the following must be done to clear up the connection error:

  • Update the AnypointStudio.ini  — ${Anypoint_Studio}/AnypointStudio.ini  

    • Add the following lines after the line "plugins/org.eclipse.equinox…"

      • -vm.
      • ${JDK_HOME}/bin/javaw.exe — This needs to be the java install where the JCE files have been updated.

Example AnypointStudio.ini:





Mavenize Your Mulesoft MS CRM Dynamics Project 


When a Mulesoft MS CRM Dynamics Project is Mavenized, you will need to have access to the Mulesoft EE Repo to pull down the MS CRM Dynamic dependencies.  You will need to work with your Mulesoft Success Manager to request access to the Mulesoft Nexus EE Repo, and Mulesoft will request that you have your own Nexus set up to store dependencies so you are not pulling from their Nexus for local builds.

Retrieve Multiple Records by Query


The team has observed excessive memory usage when retrieving multiple records via DataSense. In one instance, a query for 20,000 records with four fields returned ran a 10 GB JVM out of memory.  The workaround has been to use native FetchXML in lieu of DataSense.  

It looks like this maybe a feature of the connector as stated in the Mulesoft meta-data caching documentation:


"The connector does cache metadata by default."



"Data sense: As data sense requires all entities to be retrieved, the entities retriever does that and caches it by entity to be reused between different calls. In addition, data sense also exposes attributes for each entity, and this is done by an attributes retriever. For data sense the attributes retriever that is used gets all entitiy’s attributes and caches it (for each one of the entities for which you perform a data sense operation)."

MS Dynamics Execute Multiple Limitations 



  • No recursion is allowed — ExecuteMultipleRequest cannot invoke ExecuteMultipleRequest. An ExecuteMultipleRequest found in the request collection will generate a fault for that request item.
  • Maximum batch size – there is a limit to how many requests can be added to a request collection. If that limit is exceeded, a fault is thrown before the first request is ever executed. A limit of 1000 requests is typical though this maximum amount can be set for the Microsoft Dynamics CRM deployment. The deployment setting for this limit is BatchSize.
  • Throttling of concurrent calls – for Microsoft Dynamics CRM Online there is a limit of 2 concurrent ExecuteMultipleRequest executions per organization. If that limit is exceeded, a “Server Busy” fault is thrown before the first request is ever executed. For an on-premises deployment, throttling is not enabled by default. The deployment setting for this limit is ExecuteAsyncPerOrgMaxConnectionsPerServer.

Tools to test fetchXML