Create PDF documents from Dynamics 365

Generate PDF Doc from Dynamics 365

Document generation is required at many steps within Dynamics 365 processes – ideally to keep a record of a state of a record or to share with users – internal/ external.

Some common ways to generate documents was via Document templates, SSRS reports and Mail merge [ soon to be deprecated]

SSRS Report generator: Within the ambit of Dynamics, this is the only tool that allows generation of documents in multiple formats. Though involving multiple clicks from the end-user, it gets the required output.

However, even if a basic document is needed to be generated via SSRS, the task of building, correcting and deploying a SSRS report using data from dynamics is not a task for the Business user. Requests always needed to be routed via the development team and many a time takes up multiple iterations to get a perfect document out.

The bottom-line: While popular, SSRS is a Report generator tool and is an overkill if used for document generation

Document templates: This continues to be the most popular mode of document generation on Dynamics. Basic templates can be quickly created, and a single click can publish the data and download the file. While one issue of “no document generator” was resolved, another problem was identified.

Using templates, the downloaded file format is only available as a Word file – a format good for editing, but not for sharing. The user still needed to use a pdf converter offline and then share or save a non-editable copy

One of the most sought-after features on User Voice was the request for a PDF document generator from within the application

While no timeline was set for this release on the app, various ISV’s offered their own custom solutions, which could output documents in different formats.

So, on one side was the OOB solutions which involved multiple steps from the users end to generate the document and on the other were the  3rd party add-ons which though involved investment could do the same job in a couple of clicks.

PDF generation with 9.x

Finally, with the major 9.x release and the move to the app model, Microsoft released the PDF generation feature on the Sales app [but only on the Quote record for now!]

While it’s the document templates that are selectable for output as pdf, the navigation has been made easier.

Rather than navigating to the template and then having a button for pdf output, Microsoft has separated the Word Template buttons and the PDF buttons

2 new PDF buttons (‘Create PDF’ & ‘Email as PDF’) available on the Ribbon directly. Clicking on the dropdown lists down all Word Templates published to be available on the entity.

Create & Email PDF

These buttons do exactly what they say.

Create PDF: Automatically creates a PDF document for the selected Document Template and opens it up within the browser on the screen.
Email as PDF: Opens up a draft Email record with From, To, Subject & Regarding fields auto-populated, and the PDF document attached.

Users can manually make the necessary changes to the Email and send.

Steps to enable the PDF features

The feature while currently available only for UCI, is disabled by default
To enable PDF generation on the  Quote entity, browse to ‘App Settings’ area within ‘Sales Hub’
Within this area, under ‘Sales Administration’, you should find the ‘PDF Generation’ setting.
Set it to ‘Enabled’

Note: In some CRM instances the location may slightly differ based on the sitemap customizations.

Enable PDF Feature

While at the moment, the PDF generation feature seems to be limited only for the Quote entity, we can be sure to see this on the other entities soon!

The Future of Project Based Services from Dynamics 365

Planner, Project Service Automation, Projects, Finance, and Operations – the Final Vision

The 2019 release wave 2 investments have been focused on providing modular offerings where capabilities across Microsoft Project, Project Service Automation, and Finance and Operations service industries are to complement each other in a seamless fashion when combined and provide a simple go-to-market story that is easily consumable.

The service industries module in Finance and Operations is especially strong in project accounting, with revenue recognition and customer-facing invoicing that leverage date-effective exchange rates and a rich sales tax.

At some point in 2020/21 support for PSA, 3.x clients will get withdrawn and clients will have to transition to Project Online on CDS and Sales Extensions for Project.

For individuals and teams working together on tasks, the Planner will last as the beginning point. The Planner is not a component of the new Project service but the Planner will be added into the new Project service. The Planner Plans will also be present in Project Home, Roadmap, and for reporting across all work.

Work in Progress

In preparation of this vision, changes have been happening across the 3 main applications – Projects, Project Service and Finance and Operations

Users will be able to have access across the 3 applications and based on the Source of Information, be able to work on it or read information updated from other apps.

Impact on Project Service and the Upcoming PSA features

In Q1 2020, MS will replace PSA’s Work Breakdown Structure (WBS), Gantt, and task scheduling capabilities by leveraging these from the new Project service experience.

Once the new integrated experience is available, there is an announcement expected which will define a new way of acquiring the capabilities encapsulated in the current PSA offering.

The PSA subscription will take place by a mixture of Project Online subscriptions and a Dynamics 365 subscription.

Upcoming PSA features

Extending the new Project Service and Dynamics Sales Extensions for Project with the Project Financials capabilities in Dynamics 365 Finance will provide a comprehensive offering for project-based organizations.

This initiative will center around combining the existing capabilities in Project Service Automation and Dynamics 365 Finance to complete the business processes for projects.

  • Ability to set up split-billing for project contracts
  • Ability to set up not-to-exceed limits for project contracts and quotes and enforce them during invoicing
  • Ability to set up billing and chargeability options for work breakdown structure (WBS) tasks
  • Support for retainers on project contracts
  • Point-of-origin-based project operations

project based services

Dynamics Sales Extension for Projects

The 2019 release wave 2 will construct on the new project service and will bring the Dynamics 365 Project Service Automation ability with Microsoft Project in a single experience.

This will incorporate abilities such as bookings, sales, pricing, costing, time and expense capture, and approvals and project actuals. These abilities will be packaged as a solution representing Dynamics Sales Extension for Projects.

Portal Security Authentication and Authorization – Quick Reference Guide


Local Authentication (Not Recommended by Microsoft)

  • Contact record configured for Portal access
  • Invite enabled access (configurable)
  • Username & Password stored in CRM. Password is encrypted
  • Password Recovery & Reset
  • Email address confirmation & Two-factor authentication via email (optional)
  • Lockout in case of multiple failed login attempts (configurable)

External Authentication

  • Contact record configured for Portal access
  • No-code configuration approach for setup
  • Implemented via ASP.Net Identity API framework  (OpenID Connect or OAuth or SAML based providers)
  • Invite enabled access (configurable)
  • Password managed by 3rd party identity provider (Yahoo, Google, Twitter, Facebook, Microsoft, Yammer, LinkedIn etc)
  • Multiple external identities can be configured. Users can login with any of the accounts (depending on configuration)


Web Roles

  • Controls access to the Portal
  • Users can have 1 or many roles. (roles are additive)
  • An administrator can define custom roles
  • An administrator can define a default role, which will automatically available to a logged-in user (even if the contact has not been assigned any web role)

Entity Permissions

  • Enables record-based security.
  • Handles scope (global, parental, account, contact) and permissions (read, create, write, delete) for data surfaced on the portal

Web Page Access Control Rules*

  • Restricts access to Portal Web Pages

Content Access Level

  • Provides an additional layer of security for Knowledge Articles (e.g. : Default, Registered Users and Premium Users)

Publishing State Transition Rules

  • It provides an additional layer of security for managing content on the portal.

Forum Access Permissions

  • Provides an additional layer of security for viewing and/or moderating Forums

Website Access Permissions

  • Permissions for enabling front-side editing of portal content (e.g. : Managing site navigation, content snippet etc)

Liquid Templates

  • Custom code using Liquid can be used to cover scenarios not achievable using above.

Other Security Features

IP Address Restriction

  • Restrict access to the portal via IP address

Enable maintenance mode

  • Disable portal access when the portal/CRM is under maintenance
  • Display a customized page to notify the user

GDPR Implementation

  • Several configuration options available for GDPR compliance

Also, read Dynamics 365 Portals Authentication – Options and Features

PowerApp Portals


The PowerApp Portals provide one of the last missing pieces to the Power Platform story.

PowerApps Portals was announced in June as the successor to Dynamics 365 Portal. It will be fully decoupled from Customer Experience apps and will live alongside the two other types of PowerApps – Canvas and Model-driven. It has been promoted as a way to expose processes and data to external users with new mechanisms tied to Azure, PowerApps, and the Common Data Service [including Dynamics].

PowerApp Portal

For Microsoft and other enterprise software vendors, exposing business systems data to non-licensed users has been a long-running point of contention. Customers have long been warned not to look for workarounds to purchasing licenses such as exposing data through reports or other customer application interfaces that avoid licensed interfaces. With the below changes, Microsoft expects to plug this gap and compliance issue –

  • Putting together a new licensing model for Portals
  • Implementing consumption measuring devices
  • Simplifying for the Org to quickly onboard and
  • Extending the platform with enhancements and integrations

Details below are based on information as is currently being shared by Microsoft – however, MS is still taking feedback from partners and trying to make some amendments to the licensing structure.

What is a PowerApp Portal?

A PowerApp Portal is a Low Code, responsive Website with the familiar WYSIWYG designer for easy branding, linkable to a CDS system. Users can interact with the data via authentication provided by enterprise authentication providers or anonymously. Information can be filtered, and security applied so that the external user can only see or interact with data that is specific to him or his role.

What is CDS system?

CDS for simple understanding is an easy to manage, secure database with a prebuilt set of entities provided as a paid Azure Service.

While Dynamics 365 already uses CDS as the backend, data from multiple other data stores can be easily integrated into CDS and a unified experience across databases can be provided

Features of the PowerApp Portal

To understand its features simplistically – As an off-shoot of the Dynamics 365 portals, all of what can be done on the existing Dynamics Portals can be done on the PowerApp Portals too- and more. The biggest feature on the portal is the ease of building the PowerApp portal. The Basic version of the portal can be set up easily by the business users, with drag and drop functionality. Advanced versions need Liquid consultants and developers

Features Compare and Contrast – Dynamics 365 Portals and PowerApp Portals

Dynamics 365 Portals PowerApps Portals


2 default URL options

– microsoftcrmportals

– powerappsportal

1 default URL option

– powerappsportal



Developer Intensive Quick and easy setup experience


Built on Dynamics or CDS data Built on Dynamics or CDS data


Prebuilt templates

– customer sales and service,

– employee sales and service,

– employee management, and

– community management.

Build from scratch using a Blank template [ same templates as on dynamics to come]


Authentication: Predefined set of providers, but cumbersome to set up Available authentication configuration: Azure AD B2C, LinkedIn, Facebook, Google, Okta, and others


Can be linked to Dynamics 1st Party apps only, as a source Can work with any a CDS based data source

Skillsets needed to work on the PowerApp portal

  • Ability to code using Liquid code and JavaScript
  • Experience around working with entities and processes
  • Understanding of security roles and permissions
  • WYSIWYG designing
  • Understanding/ implementation of Authentication Providers [recommended is AzureB2C]


Microsoft revealed new pricing and licensing for PowerApps Portals during Inspire but since then has been evolving and building on it.

Notable changes which have been announced.

Pricing – Compare and Contrast – Dynamics 365 Portals and PowerApp Portals

Parameter Dynamics 365 Portals New PowerApps Portals
Provisioning a portal instance Purchase Dynamics 365 Additional Portal SKU at $500 per month Provision a portal—no need to purchase portal addons to provision a portal
Qualifying base offers Dynamics 365 licenses only Customers can add on portal external login or page view capacity to Dynamics 365, PowerApps and Microsoft Flow licenses
Internal use rights Dynamics 365 enterprise licenses, Dynamics 365 team member license. Internal users can now access portals with a PowerApps per-app/per-user license. For a Dynamics license, it is same as custom PowerApps use rights.
Monetization Per portal instance Per page view Per log in Per page view
Entitlement for Dynamics 365 customers 1 portal instance for the first 10 full Dynamics 365 USLs Not applicable―PowerApps Portals instances can be provisioned

PowerApp Portals – Licensing details

[as currently available for – Dt.9 Sept. 2019]

PowerApps Portals can be provisioned without requiring a specific license. They are charged only on Usage. Breaking down the Portal Users into Licensed and Non Licensed users, irrespective of whether they are internal or external –

1) Licensed users [Internal]

  • A user having any PowerApp Plan license
  • Dynamics 365 [various]

Users who have valid licenses will not be levied an additional usage charge

2) Non-Licensed users [Internal or External]

Microsoft differentiates between Anonymous [ not signed in] and Authenticated [signed in] users.

  • Authenticated users
    • Access by authenticated users will be charged on a “per log-in”. A log-in is defined as a twenty-four-hour period of access by a single authenticated user/ app, chargeable monthly.
  • Anonymous users
    • Anonymous portal users will be priced on a simple “per-page-view” model, chargeable monthly

3) Minimum licensing quantities

  • Login quantity

The minimum login quantity to be assigned to a portal is 100 logins/month.

Once you have assigned 100 logins, you can assign them in units of 1.

  •  Pageviews quantity:

Minimum 50,000 per portal, after that you can assign 1 at a minimum.

4) Additional portal instances

  • Additional portal instances can be spun up without any additional charge.
  • Monthly charge based on usage will be billable based on above permutations

5) Existing Dynamics 365 access to PowerApps portals

Dynamics 365 Enterprise users will continue to be able to run apps and portals that extend and customize the licensed Dynamics 365 application, as long as those apps and portals [even if they are custom] are located in the same environment as their licensed Dynamics 365 application.

Custom apps or portals outside of the Dynamics 365 environment and access to his app license on Dynamics 365 will require a standalone PowerApps license.

The Team Member license does not get access to the custom portal as Team Member licenses do not allow access to a custom app.

user types


Charts on the Dynamics 365 Portal

There are two ways to add charts

  1. Add chart Liquid tag in the Copy field on a webpage
  2. Add chart Liquid tag in the Source field on a Web Template

Prerequisite for implementing Charts on Portal

  • Entity Permission Requirement
  • ID of Chart
  • ID of view to filter the query

  a) Entity permission requirement

Read privilege is asserted for the target entity being queried in the chart. For anonymous or authenticated users to be able to view the chart, you must ensure that the appropriate Entity Permission records are created and assigned to applicable Web Roles

If permission is not granted, the user will see an access denied message or You do not have appropriate privileges.

  b) ID of Chart

Follow below steps for getting id of chart

1) Go to the target entity, for example, Sales ➤ Leads.

2) Select ‘Show Charts’ option from top ribbon

show chart

3) Choose the chart you want.

4) Select More Commands, and then select Export Chart.

lead by source

5) Open the XML file of the exported chart in a text editor.

6) Copy the value of the <visualizationid> tag.

lead by source xml7) Paste the visualizationid value into your Liquid chart tag declaration for the chart ID parameter, for example:

{% chart id:EE3C733D-5693-DE11-97D4-00155DA3B01E %}.

  c) ID of view to filter the query

1) Go to the target entity, for example, Sales ➤ Leads.

2) Select the view you want from the view drop-down header.

lead by source

3) Copy the viewid value from the View window’s URL.

copy viewid

4) Paste this ID into your Liquid chart tag declaration for the viewid parameter, for example:

<!—Leads by Source – All Leads –>

{% chart id:”EE3C733D-5693-DE11-97D4-00155DA3B01E” viewid:”00000000-0000-0000-00AA-000010001006″ %}

Method 1 – Add chart Liquid tag in the copy field on the webpage

Follow the below steps for adding a chart.

a) Add Child Page to Portal.

b) Give all required details on General

c) Go to Language Content

d) Add below liquid tag with required original ids in Copy field of Page

{% chart id:”EE3C733D-5693-DE11-97D4-00155DA3B01E” viewid:”00000000-0000-0000-00AA-000010001006″ %}

create new child page

e) Save Page

Method 2 – Liquid tag in the source field on the web template

Follow the below steps to add chart using Copy field on a web page

a) Navigate to Dynamics 365 portal

b) Go to Web Template ➤ Add new template

c) Give details like Name and Website

chart web template

d) Add below code in Source field, you can add single or multiple charts as per requirement. Replace Id’s with actuals

code for portale) Save Web Template

f) Next, navigate to a page template to be used, you can use existing also.

g) Page Template ➤ Create Page Template

h) Add below details

Name, Website, Type=Web Template, Web Template=template you have created above, entity name =Web Page(adx_webpage)

chart page template 2

i) Save Page Template

j) Now create a child page on the portal

k) Give details as below.

charts for leads

l) Save Page.

The Final Output

Final output

Unsupported charts and chart types

The following Dynamics 365 for Customer Engagement chart types are currently not supported in portals:

  • Doughnut
  • Tag

The following table lists the Dynamics 365 for Customer Engagement charts that are currently not supported in portals.

Chart Name Chart ID Entity Type
Accounts by Owner – Tag Chart be178262-6142-4b41-85b7-4ccedc62cfd9 account
Activities by Owner – Tag Chart c83b331e-87c7-488c-b8e7-89a6098ea102 activitypointer
Activities by Priority – Doughnut Chart d3f6c1eb-2e4b-428b-8949-682a311ae057 activitypointer
Contacts by Account 2ff3ebea-6310-4dde-b3a1-e1144ea42b7b contact
Contacts by Country ea89e2ad-2602-4333-8724-aa5775d66b77 contact
Contacts by Preferred Contact Method 751b7456-308e-4568-a3a9-47135aae833a contact
Goal Progress (Count) a93b8f7b-9c68-df11-ae90-00155d2e3002 goal
Goal Progress (Money) aec6d51c-ea67-df11-ae90-00155d2e3002 goal
Today’s Target Vs. Actuals (Count) 1b697c8e-9a6f-df11-986c-00155d2e3002 goal
Today’s Target Vs. Actuals (Money) 1e697c8e-9a6f-df11-986c-00155d2e3002 goal
Cases By Account 38872e4f-ac99-e511-80da-00155dc1b253 incident
Cases By Priority 0f0fb995-9d6f-453c-b26d-8f443e42e676 incident
Cases By Product 17c3f166-5b22-4476-819b-b05da2e8d24f incident
Articles expiring this month by owner 47d696ad-7c3b-e511-80d1-00155db10d2b knowledgearticle
By Owner 330068fd-833b-e511-80d1-00155db10d2b knowledgearticle
By Subject bcd3f9a5-913b-e511-80d1-00155db10d2b knowledgearticle



Importing Multi-Select Picklist Data in Dynamics 365

Multi-select picklist was one of the most requested features in the Dynamics community and was introduced in Dynamics 365 from ver. 9.0

The issue

Although introduced, importing multi-select picklist data can be a problem using the CRM Import Tool. Below is the sample csv file with a multi-select column named ‘Hobbies’.

Multi-Select Picklist data

Although it as 2 distinct values in the ‘Hobbies’ column (data in the multi-select field is available in the field separated by a semicolon), the CRM Import Tool does not consider the same. Refer screenshot below.

map fields dynamics 365

Importing the above will result in CRM automatically creating a new option set value called ‘Running; Swimming’ which is not the intended purpose.

The good news

The CRM Import Tool supports both CREATE and UPDATE of records. Although the tool does not support multi-select picklist data during record creation, it does support multi-select picklist data during the update of records.

Workaround steps

  • On the CSV file which you plan to import (for record creation) add a new column (e.g.: Unique Id) and populate it with a sequential number value.unique id dynamics 365



  • Create a similar field in CRM (datatype: whole number) on the entity.
    While mapping the columns during Data Import ensure the map the ‘Unique ID’ column with the newly created field.
    Do the map the Multi-select field. (We will be handling this after the import)
  • Now proceed with the Import. Once successfully importedyou should have all the records created in CRM with the ‘Unique ID’ field.
  • Include the ‘Unique ID’ field and the Multi-select field in a new view and sort it based on the ‘Unique ID’. Now export the view to Excel as a ‘Static worksheet’.
  • You now have 2 files:
    • Original import file
    • Exported data file from CRM
  • Ensure that the data in both files have been sorted by the Unique ID field. Carefully copy the multi-select column data from the original file and paste it over the multi-select column on the file exported from CRM. (Do not overwrite the header column)
  • Simply import back the updated file using the CRM Import Tool. CRM will identify it as an updated job and update back all the records in CRM with the multi-select values.

Alternatively, you could even use the ‘Open in Excel Online’ feature to do the same.

Limitations of Multi Select pick Lists

  1. The default value for a multi-select picklist cannot be set from within Customizations; however, you could use custom code approach to set a default value.
  2. You could define any number of options for a multi-select picklist, however, only a maximum 150 options can be selected for a multi-select picklist field
  3. Although multi-select picklist is available as a ‘Trigger’ for workflows, it cannot be used within a ‘Check Condition’ on a Step.
  4. Bulk-Edit does not support multi-select picklist fields.
  5. If you plan to use the CRM SDK to create/update multi-select picklist values, ensure that you are using the ver. 9 or above of the SDK assemblies.

More details on how to interact with multi-select picklist via CRM SDK here



Transform Your Business in 4 ways with Dynamics 365 Portals

Dynamics 365 Portals are shipped with every Dynamics tenant* along with multiple ready to use templates which can be quickly configured and customized to suit business needs to build and extend channels of communication and Collaborate with specifically invited customers, partners or employees.

What are Portals for Dynamics 365?

  • Portals are an External website platform which is deeply integrated into CRM
  • They provide channels for various Customer Engagement Scenarios
  • They are an opportunity to extend CRM modules to the web for external customers and partners, without the added burden of building, hosting and customizing

dynamics 365 portals

The Microsoft promise

  • High Availability: 9% Guaranteed Uptime with Financially backed SLA
  • Performance & Scalability: Enterprise-grade scale and Performance for your portals
  • Disaster Recovery: Making sure your Portals are always up and running.
  • Data Protection: Compliance with Microsoft Data protection standards to make sure your data is safe.
  • Global Availability: Available Worldwide from your nearest Datacenter.
  • Security: Modern TLS crypto standards, DDOS protection, X-site scripting protection, etc.

Listen to those who matter

THE PORTAL provides a single view to the customer of all his activity with your organization. Every single Account – be it Partner or a customer, has a distinct view of all his activities with your organization.

  • Sales – Products Purchased, change Logs, Invoices
  • Customer Service – Knowledgebase for Self-Service, Case history, Live Assist channel
  • Marketing – White papers, Product Collateral, New Launches, events, news, and Webinars

Share and collaborate in real-time

The portal provides an Out of the box Collaboration tool in the form of forums. Easy Moderation capabilities and discussion views make responding to customer queries and discussion with Partners on Opportunities seamless and easy

While the Support team resolves cases and creates the knowledge base articles in its routine daily activities, the same can be surfaced on the portal. Customers and partners can create and track queries and issues to closure and rely on Self- Service for any urgent issues. The Search feature and the classified display of KB is a default feature available on specific portal templates

Engage – Interact with your customer

Embed a chat widget onto a portal to proactively engage with customers. Be it for sales inquiries or requests from partners or issues which need to be responded to and resolved, personal touch and availability of someone to address it, always creates a positive experience. Live Assist or any other Third-party app can easily integrate and reside within the Dynamics portal

dynamics 365 portals 2

Engage customers with a modern case management system, which can Search through the Knowledge Base – one of the most powerful features of the platform – and scan through key terms and phrases to show results. Activities and correspondence tracking and quick views of Active and Resolved cases all reduce the burden on Call center and the helpdesk teams.

Transform – Leverage the platform for more

Dynamics Portals literally has all the capability available in Dynamics and more.

Social collaboration – Polls, Discussion Forums, Knowledge Base Search and Self Service are items just on the surface. Add to it, the mobile capability where its device ready and plays well even when you are on the move.

Dynamics 365 portal 3

Surface your product and Service collateral and use the platform for marketing, highlight your featured products and enable the Sales team, share newsletters and webinar links and create a Knowledge store which becomes a reference Library for all, link it to an eCommerce portal and a payment gateway and shorten the sales-to-pay- time.

*Check the license requirements



Dynamics 365 Portal – Best Practices for Success

Automation has become a necessity in every type of business and Dynamics 365 CRM is one of the most preferred automation systems implemented by various organizations around the globe. But its success totally depends upon its users, which leads us to the question, how to make the portal good so that adoption is high.

Dynamics 365 Portal Best Practices

  • Brand it- make it look good. 

Your portal can be branded!

While it was a complex activity earlier, with bootstrap framework becoming the standard, your portal is responsive and views fantastically on devices too.

Use your brand colors and fonts to make as close to your Org. brand guidelines. The bottom line – Give it the same detailed attention as your Internet-facing site!

  • Give it a Title and a Name

The simplest name is to continue with the Microsoft nomenclature – Portal. But, give it some thought – this is the site which is going to be used by your existing esteemed clientele. You need to title it as you want them to perceive the Portal. A few other simple name options – Engage, Connect, Collaborate!

  • Update the URL

Give your portal a URL which your clients can relate your Org with. A “microsoftdynamicscrmportal” or “powerappportal” should be updated to your org. domain name

Create a subdomain on your DNS and if there is consensus, link it to the Internet site as a database portal

This portal, linked to your Dynamics database will potentially hold secure information, so remember to encrypt the data via an SSL certificate

  • Simplify and channelize Authentication and Authorization

While there are several modes of authentication mechanisms available, choose one or more as required, which your clients may need and more importantly, which you and your team can maintain and troubleshoot with time

Simplify the registration process and sending of invitations – out of the box it’s cumbersome ​!

Set up the right roles and provide authorized gated access to teams to access correct and specific data shared with them.

  • Consolidate all knowledge – forums, KB articles, manuals and guides

Use the Portal to share collateral with your clients – be it documents, Live Help, helpdesk Support or discussion forums.

Consolidate all knowledge – forums, KB articles, manuals, and guides. The

search is a great feature, but it can only work if the content is one place. ​

  • Drive Adoption internally

Train and educate your team so that they are enabled and realize how the portal can increase their productivity.

Once the content is surfaced, it will be your team whose usage and constant reference to the portal and data sharing on it will bring the customer to it.

  • Portals are work in progress

Customer experience is about choice. Portals are an extension and provide an alternate mode of engagement. It is not a substitute.

Kick-off the project go Live with a basic portal and use anyone data share with your clients – like any below and then keep adding more

  • Case creation Or
  • Invoice sharing Or
  • Knowledgebase Or
  • Project data Or
  • Invoices

Get feedback from your clients and scale-up.

Lastly, add analytics and identify Dynamics 365 portal traffic to find out what is working and what needs to change!

Dynamics 365 Portal Invitation – Issue with invitation redemption

Dynamics 365 Portal Invitation Issues

  1. One of the available ways to invite a user to the portal is to generate an Invitation on a Contact and email this invitation with the one time “redemption code” to the user
  2. Every invitation email sent has a unique invitation code which is valid only for the contact to whom it was emailed. It’s a long alphanumeric set of characters which is unique to the email id of this Contact.
  3. In case this redemption link is redeemed by some other user before the intended user uses it, the intended user will not be able to log in. Further, if the incorrect user, later wants an invitation to the portal for his own profile, he too will face issues.

Follow the below steps, to fix the issue in such scenarios

  • Consider “Invited Contact” as the contact to whom the portal invitation was sent and “Other Contact” as the contact who redeemed the invitation
  • Open the “Other Contact” record in CRM and navigate to the Portal Contact form. Clear out the ‘User Name’ field and save the record. Navigate to ‘External Identities’ sub-grid and delete the applicable record.

Web Authentication

Portal Contacts

  • Open the “Invited Contact” record in CRM and navigate to the Portal Contact form and ensure that the ‘User Name’ field is blank. Navigate to ‘External Identities’ sub-grid and ensure that there are no records.
  • Open Advanced Find, and search and delete the Invitation sent to the “Invited Contact”.

  • Send a new invitation to the” Invited Contact” by clicking the Work365 ‘Sent Portal Invite’ button OR the OOTB Portal ‘Create Invitation’ button

Create Invitation

Contact Management from Dynamics 365 Portal – Part 2


  • The Portal Contact form was being used by Admin for managing contacts to Create, Edit & Deactivate from Portal.
  • When new Portal contacts were created from the portal, Duplicate records were getting created despite the Duplicate Detection rule on Dynamics. It, however, showed a system message which was not understandable.
  • If the new user to be created was an Inactive user, he needed to be activated rather than be created.


  • Liquid code could not be used since it could not be triggered on change event of the email address field.
  • Defining a custom solution which worked in parallel with existing features.


  • To detect and restrict duplicate contacts getting created from the portal and provide an appropriate message there.
  • If contact is “Inactive” in CRM, rather than create a new contact, the same should be activated.


Since the duplicate detection Rule on dynamics could not be extended to the Portal, a custom process to be created using JavaScript and Liquid code  –

  • JavaScript to trigger the event of the Create Page
  • Liquid to query data on another Page.
  1. The Redirect web template:
    • Go to Portals ➤ Web Templates and Create Web Template “My Custom Web Template”, paste the below code in source property

      {% fetchxml contacts %}

      <fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”false” count=”1″ returntotalrecordcount=”true” page=”1″ >

           <entity name=”contact”>

           <attribute name=”contactid” />

           <attribute name=”statuscode” />

          <filter type=”and”>

             <condition attribute=”emailaddress1″ value=”{{request.params[’emailId’]}}” operator=”eq”/>     




      {% endfetchxml %}{  

        {% if contacts.results.total_record_count > 0 %}

        “value”: [{  

            “contactid”: “{{contacts.results.entities[0].contactid}}”,

            “statuscode”: “{{contacts.results.entities[0].statuscode.label}}”}      


         {% else %}

         “value”: []

         {% endif %}


  1. Its Page template

    Go to Portals ➤ Page Templates and create page template named “My Custom page template”, Website->Select your website, Type ➤ Web Template, Web Template ➤ “My Custom Web Template”, Entity Name ➤ Web Page(adx_webpage). Click Save.
  2. Its Web page so that it can be accessed.

Go to Portals->Web Pages and create web page give any name “My Custom Web Page”, Website ➤Your website, Parent Page->Home, Partial URL ➤”any name of your choice”, Page Template➤ “My Custom page template”, Publishing State->Published and click Save.

  1. On the Create Contact page – add the below JavaScript to trigger on the change event of the Email ID Text field.

Go to Portal ➤ Web Pages->Open your page and click on a web template and paste the below code in source property of web template and click Save.

Note: If you are using default web template then create a new one

  <script type=”text/javascript”>   

      $(document).ready(function () {  

   $(“#emailaddress1”).change(function() {


      var httpReq = CreateHTTPRequest(“GET”, “/mycustomwebpage/?emailId=” + $(“#emailaddress1”).val(), false);


        if (httpReq.status == 200) {

      var contactId = JSON.parse(httpReq.responseText).value;

            if(contactId.length > 0)


                if(contactId[0].statuscode == “Inactive”)


                   $(‘.breadcrumb’).append(‘<div class=”notifications” style=”display: block;”> <div class=”notification alert alert-danger error alert-dismissible” role=”alert”><button type=”button” class=”close” data-dismiss=”alert” aria-label=”Close”><span aria-hidden=”true”>×</span></button><span class=”fa fa-exclamation-triangle” aria-hidden=”true”></span> Note: This contact already exists in CRM, in InActive mode. Click <a href=”/updatecontact?id=’+ contactId[0].contactid +'” target=”_blank”>here</a> to open the record and Activate.</div></div>’); 




                   $(‘.breadcrumb’).append(‘<div class=”notifications” style=”display: block;”> <div class=”notification alert alert-danger error alert-dismissible” role=”alert”><button type=”button” class=”close” data-dismiss=”alert” aria-label=”Close”><span aria-hidden=”true”>×</span></button><span class=”fa fa-exclamation-triangle” aria-hidden=”true”></span> Note: This contact is already exists in CRM</div></div>’); 




            else{ $(‘#InsertButton’).attr(‘disabled’,false); }       




      CreateHTTPRequest = function (action, url, async) {

    try {

        var httpReq = new XMLHttpRequest();, url, async);

        httpReq.setRequestHeader(“Accept”, “application/json”);

        httpReq.setRequestHeader(“Content-Type”, “application/json; charset=utf-8”);


    catch (ex) {

        throw ex;


    return httpReq;



Note: In the above script change the click here to open and the activate link to your edit contact page. Steps to create Edit contact page below.

  • Create Edit contact page to activate contact on portal
  • Create a new web Contact form in CRM. Fields
    • Full Name
    • Account
    • Work Email address
    • Contact details
  • The update contact form on Portal
    • Go to Portals ➤ Entity Forms ➤ New and Create new entity form for update Contact. Select Entity name ➤ Contact, Form Name as created above in Dynamics, Select mode as Edit, Record Source type ➤ Query String, Record ID Query String Parameter  ➤ id. Website ➤ Select your website.
    • In Additional setting ➤ Action Button Configuration ➤ Actions ➤ Click on +Activate
    • Go to Portals ➤Web Pages ➤ New and Create a web page for update contact entity form.

You can add some emails and templates to be triggered on any changes to be tracked!

Also, check out Contact Management from Dynamics 365 Portal – Part 1