xRM Portals Community Edition to Dynamics 365 Portals migration preparedness

Dynamics 365 Portals is receiving regular updates from Microsoft, and as the product evolves it has changes which include new features as well as the deprecation and future removal of features.

One of the stated objectives for the open source xRM Portals Community Edition project is to enable a migration path to the Microsoft hosted service. To be prepared for this eventual migration, it’s helpful to know what changes are occuring in Dynamics 365 Portals now that will affect such a migration, so that proactive decisions and actions can be taken in advance and make a future migration as smooth a process as possible.

Use Azure AD B2C for authentication

The documentation Implementing General Data Protection Regulations in your Dynamics 365 portals describes various new features for meeting GDPR compliance. In what is seemingly an unrelated topic, a short note is included that all authentication methods except for Azure AD B2C should be considered deprecated.

Going forward, we recommended that you use only Azure AD B2C identity provider for authentication and that you deprecate other identity providers.

GDPR aside, using Azure AD B2C makes sense in general now that federated authentication and single sign-on has become the expected norm in authentication experiences across the web. The instructions and features in the documentation for marking identity providers as deprecated are not present in xRM Portals CE, so alternative measures will need to be taken if already using the non-B2C identity providers.

Hopefully there will be additional information published in the future on what Azure AD B2C does that helps to acheive GDPR compliance, but in general it’s clear they are centralizing on B2C for identity management and the Open ID Connect protocol.

Use analytics services for usage metrics

The blog post Portal capabilities for Dynamics 365: Deprecated Features describes various features that are being deprecated, primarily centered around ‘tracking’ features that log several activities that are performed in a portal, including viewing web pages (web page tracking), downloading files (web file tracking), and sign-in tracking. I suspect these features are being deprecated primarily to improve performance.

The alternative is the approach most people have likely already taken, which is to use web analytics services such as Google Analytics, Application Insights, Microsoft Dynamics Marketing, and Clickdimensions, to name a few, by inserting JavaScript embed codes into content such as content snippets and web templates. This will be a simple change to make, with the most effort being to switch away from any custom reporting that has been implemented in Dynamics 365 on top of these deprecated features.

Use liquid code and web API development techniques

This last change is not due to any documentation published by Microsoft, but the well-known fact that everyone has been aware of since Dynamics 365 Portals began, which is that custom ASP.NET code is not allowed in Dynamics 365 Portals. Some people will use xRM Portals CE because they want the ability to add custom ASP.NET code like they could when using Adxstudio Portals, but this is a short-sighted approach to take if wanting to migrate to Dynamics 365 Portals in the future. To remain migration friendly while adding custom functionality, use liquid code and use web APIs from external sites with B2C federated authentication, and don’t modify the MasterPortal project codebase.

Implementing and using web APIs with B2C is by no means a trivial effort, and is hopefully something that the Microsoft portals team will provide structured guidance on in the future, but for now this needs to be pieced together using advanced development techniques. This is the approach we use at Adoxio in our Connect 365 product that adds additional features to Dynamics 365 portals. Microsoft does have some introductory materials in the ASP.NET Core documentation Cloud authentication in web APIs with Azure Active Directory B2C in ASP.NET Core that gives an idea of how to start implementing such solutions.