Dynamics 365 and Adxstudio Portals Compatibility

Update 2/1/2017:
Microsoft has release CRM SDK 6.1.2 which fixes compatibility between Adxstudio Portals v7 and Dynamics 365! Read more here.

With all the changes in Dynamics 365 there are updates in the SDK and service that now make Adxstudio Portal v7.x incompatible. Outlined below are some of the issues you may run into, with some temporary workarounds if you want use Dynamics 365, and the potential pitfalls of these current solutions.  As a result of the current status of support with Dynamics 365, it would be recommended that if you have an Adxstudio Portals v7.x implementation using CRM Online that you currently do not upgrade past CRM 2016 Update 1.

Update 12/27/2016:
It looks like a fix is going to be coming soon! Posted over at the Dynamics 365 Team Blog about SDK backwards compatibility a new CRM 2013 SDK version that supports the new authentication will be released as SDK v6.1.2. With this updated SDK version you would be able to swap the reference DLLs in Adxstudio Portals v7 without the negative impact to functionality that switching to v8.2 SDK has. No date was provided for this update, but we may also see v7.0.0024 released with this fix in the new year.

Dynamics 365 SDK Backwards Compatibility

One of the changes that is causing some issues is that the ACS endpoint is no longer being provisioned on online instances.  This started with some CRM 2016 Update 1 instances but now seems to be rolling out more broadly.  You might receive the following error when attempting to have your portal connect to the CRM.

ACS10002: An error occurred while processing the SOAP body. ACS50000: There was an error issuing a token. ACS50001: Relying party with identifier ‘https://instancename.crm.dynamics.com/’

Some instances of this could be resolved by changing the instance URL which would potentially cause the ACS endpoint to be rebuilt, but not always.  You could also log a ticket with Microsoft Support for them to restore the ACS endpoint to your instance.

Adxstudio Portals v7.x ships as a solution compatible with CRM 2013, 2015, and 2016.  As such it ships with the CRM 2013 SDK DLLs (v6.0 SDK).  With the release of Dynamics 365 and SDK v8.2 the CRM 2013 SDK DLLs are no longer compatible, and you actually need to upgrade to the v8.1 SDK DLLs to connect with a Dynamics 365 instance.  If you do try to connect Adxstudio Portals with its default CRM SDK 6.0 DLLs then you would likely see the following error message:

The Organization Service URL is invalid. Metadata contains a reference that cannot be resolved: 'https://instancename.crm.dynamics.com/XRMServices/2011/Organization.svc?wsdl=wsdl0'. There is an error in XML document (1, 1298). The maximum nametable character count quota (16384) has been exceeded while reading XML data. The nametable is a data structure used to store strings encountered during XML processing - long XML documents with non-repeating element names, attribute names and attribute values may trigger this quota. This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 1298.

This can be solved by replacing both the Microsoft.Xrm.Sdk.dll and the Microsoft.Crm.Sdk.Proxy.dll with the versions from the v8.1 SDK, changing the MasterPortal project to .NET Framework 4.5.2 and adding the following dependent assembly references.

<dependentAssembly>
  <assemblyIdentity name="Microsoft.Xrm.Sdk" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
  <assemblyIdentity name="Microsoft.Crm.Sdk.Proxy" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
  <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
</dependentAssembly>

However while this will solve your connection issue it will come with unknown issues to other Adxstudio components like Entity List and the portals front-side editor. The change in SDK version does have impact on the portal functions due to the differences between SDK 6.0 (CRM 2013) and SDK 8.1 (CRM 2016 Update 1) and the dependencies the portal components have.

At this time it would probably be recommended if you have a Adxstudio Portals v7.x implementation using CRM Online that you do not upgrade past CRM 2016 Update 1. If you run into the ACS endpoint error explained above then open a support ticket with Microsoft Support and request that the ACS endpoint be restored. If you have already been upgraded, or want to use Dynamics 365 and still need Adxstudio Portals v7, then your best option is to do the DLL upgrade and try to work around the current issues with the reference change.

Note if you start a trial or demo with the intent on showing Adxstudio Portals you can change to a previous version with the following guide.

Microsoft has been notified and aware of the issue.  We are working with them to see what resolution options are available.  As more information on a potential update to resolve these issue becomes available from Microsoft I will update this post. Below is currently a running list of known issues using SDK 8.1 with Adxstudio Portals v7.0.0022, this is in no way a complete comprehensive list.

  • Entity List – grid configuration Edit action – will not appear on entity list rendering for Target Types ‘Web Page’ and ‘Url’, if using Target Type ‘Entity Form’ will result in error:
    Cannot create and populate list type Microsoft.Xrm.Sdk.KeyAttributeCollection. Path 'EditActionLink.EntityForm.KeyAttributes', line 1, position 2877.
  • Entity List – grid configuration Details action – will cause error if using Target Type ‘Entity Form’ as indicated above
  • Front-side editor – ‘Object reference not set to an instance of an object’ when Creating a new web page, or editing a page, or editing a snippet, or modifying a web link set.

If you discover other issues please let me know through comments, Twitter, email or however else and I will update this listing.

Note: This post also appears on Adoxio Business Solutions Team Blog.

Change your Dynamics 365 Trial to a Previous Version

When you create a new trial of Dynamics 365 it will always come as the latest available copy of CRM or now Dynamics 365. Often when a new version is released the trials are the first to get access to the new build so that it can easily be showcased. With every new version there will be incompatibilities with 3rd party or legacy components due to changes in the SDK or functionality within the CRM interface. For these reasons you may want to have a previous version for your CRM trial so you can still showcase that functionality that has not been updated for the latest release.

With the CRM Online/Dynamics 365 Administration Center you can administer trial instances to edit their URL or even reset them to an earlier version.

  1. With your trial account login to https://portal.office.com.
  2. On the tile selection, select the Admin tile.
  3. If you are prompted to enter a backup email or phone number you can simply cancel this screen and it will return you to the admin center.
  4. On the left hand navigation, select Admin Centers and CRM or Dynamics 365.
  5. You should now be at the CRM Online/Dynamics 365 Administration Center where it lists your trial instance. Highlight your instance and select Edit.
    d365admin
  6. To be able to reset your instance to an previous release we need to put it in Sandbox mode, from the Instance Type drop down, select Sandbox, and then click Next, and Save.
    instancetype
  7. You should be returned the Administration Center instances and your trial instance should now show as a Sandbox type, and you should have a reset button when it is selected. Select Reset.
    d365admin-reset
  8. On the reset instance screen, you have a target version dialog where you can select the version of CRM you want your instance to be. Select your desired version.
    targetversion
  9. You can then select your desired scenario, if you just want a blank CRM then select none of these. You can also change your CRM URL if you wish. Note this will not change your tenant name (tenantname.onmicrosoft.com).
  10. Select the reset and then carefully read the prompt. This process will delete any existing and customizations currently in the instance. Once ready, confirm yes in the dialog.

You will then have to wait 10 – 15 minutes for the instance to reset to the target version but once done you can navigate to your previous version of CRM and perform whatever tasks you needed to.