Archive for the ‘Dynamics 365’ Category

Dynamics 365 and Microsoft Power Platform | Release planner

As the Dynamics Release Wave 1 2022 is being deployed this month, if you are planning for an upgrade of your existing system, Release planner tool (BETA) helps you to organize and plan for New and Upcoming features.

  • To get started, first create an account. Alternately you can connect using your Work Account.
  • Pick the feature you want to try add that to your plan by clicking ‘+ To my plan’.
    • Click ‘Learn more’ to understand about the feature.
  • Once you add the Features, go to ‘My Release Plans’ for collated list.
  • Refer this article by Microsoft FastTrack Team on how to plan and approach the products release wave upgrades.


Categories: CRM, Dynamics 365 Tags:

Dynamics 30 days trial | Changes in subscription steps

August 3, 2021 2 comments

As we know would allow us to subscribe to Dynamics 30 days trial using our personal email (i.e.,, etc…). With the recent changes, redirecting us to the following portal.

Up on clicking ‘Try for free’ its mandating us to enter “Either Work or school email ID”.

Which means we can’t sign up using personal email. But wait, when you give the personal email and try, you get an error message and a ‘Click here’ link, which allows you to sign up using personal email.

Click on ‘Click here’ and you will be redirected to the classic ‘Sign up’ screen.

Alternately you can directly use this link to go to the above Sign up page directly by passing new portal.

Hope this info saves you sometime 🙂

[Step by Step] Using TypeScript in Dynamics 365 9.x

What is TypeScript:

  • TypeScript extends JavaScript by adding types to the language. TypeScript sits as a layer on-top of JavaScript, this layer is the TypeScript type system.
  • In a layman terms, TypeScript allows C# way of writing jScript.

In this article, lets see how to leverage TypeScript capability while writing client scripts in Dynamics 365.

Key Notes:

  • TypeScript’s file extension is ‘.ts‘.
  • Dynamics 365 cannot understand TypeScript, it only understands jScript (i.e., .js)
  • So we write the script in TypeScript, and use ‘Transpile’ technique to convert TypeScript to jScript.
    • Transpiling is taking source code written in one language and transforming into another language. In our case its from .ts to .js
    • Don’t worry about Transpiling as Visual Studio will take care of this.

Now we know the basics of TypeScript, lets get started.

Setting up project in Visual Studio:

  • Create a new Web Site project in Visual Studio.


  • As we are going to Transpile TypeScript files to jScript files, create a new folders ‘ts’ and ‘js’ for code manageability.
    • ‘ts’ folder is where we write the TypeScript, ‘js’ folder is where the transpiled jScript resides.


  • Next, to transpile TypeScript to jScript, add a new json file with name ‘tsconfig.json‘.


  • Paste following statements and save.

“compileOnSave”: true,
“compilerOptions”: {
“outDir”: “js”,
“target”: “es5”,
“sourceMap”: true
“include”: [

  • Your ‘tsconfig.json’ should look like below.


  • If you observe the ‘tsconfig.json’ statements, they state that whenever you save ‘.ts’ file compile (i.e., compileOnSave’) and save the transpiled ‘.js’ file under ‘js’ folder (i.e., outDir).
  • Next, lets install the ‘xrm’ npm package for intellisence to your project. Refer this article for more details.


  • Run ‘–save @types/xrm‘ command.


  • You would see a new folder ‘node_modules’ with ‘index.d.ts’ file.
    • If you are wondering what is ‘index.d.ts’, ‘*.d.ts’ files are used to provide typescript ‘Type’ information.


Write your first TypeScript file:

Now that we got the project setup, lets write a simple ‘TypeScript’ file with ‘onload’ function on ‘Contact’ entity.

  • Add a new file ‘contact.ts’ under ‘ts’ folder.
  • Lets adding following basic structure contains ‘interface’ and ‘onload’ function.
    • A namespace is a way that is used for logical grouping of functionalities. It allows us to organize our code in a much cleaner way.


  • Now, lets extend the onload function by reading Contact Name from ‘name’ field and popup.


  • Lets extend further by registering ‘onchange’ event on ‘Contact Name’ field.


  • Save the ‘contact.ts’ file and you would get transpiled ‘contact.js’ jScript file under ‘js’ folder.


  • Following the TypeScript code if you want to use.

namespace Pract {
export function onload(executionContext: Xrm.Events.EventContext) {
let formContext = executionContext.getFormContext();

// Define ‘String Attribute’ variable to read Contact Name Attribute
let attrContactName: Xrm.Attributes.StringAttribute;
attrContactName = formContext.getAttribute<Xrm.Attributes.StringAttribute>(“firstname”);

// Register onchange event

// Read Attribute Value
let contactName = attrContactName.getValue();

var alertStrings = { confirmButtonLabel: “Yes”, text: contactName, title: “Onload Event” };
var alertOptions = { height: 120, width: 260 };
Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
function success(result) {
console.log(“Alert dialog closed”);
function (error) {

function contactName_onchange(executionContext: Xrm.Events.EventContext) {
alert(“OnChange triggered!”);

Register and test the script:

  • Add the transpiled ‘contact.js’ file as web resource to Dynamics application.
  • On ‘Contact’ form register the ‘onload’ event. Convention should be ‘namespace.functionname’ (i.e.,Pract.onload).


  • Open the ‘Contact’ record and you would get the ‘Name’ value as pop-up.




Categories: Dynamics 365 Tags: ,

D365 Data Export Service – Unable to connect to Azure SQL Server from Profile

March 14, 2020 5 comments

Other day while configuring Data Export Service to replicate the CDS data to Azure SQL Server’s Database, I encountered following error from the ‘Profile’ creation step:

Unable to connect to the Destination mentioned in the KeyVault URL


Troubleshooting steps and Fix:

From the error message its clear that, Data Export Service unable to connect to the Destination which is Azure SQL Server’s DB in my case. Following checks helped me to resolve the issue.

  • Make sure you copy the Azure SQL DB connection string using the ‘Copy’ option. This is super important when you are creating the ‘Key vault URL’.


  • Post the Azure Key vault generation, validate the ‘Secret value’ from Azure portal.


  • Test the Azure SQL DB connection from either SSMS or .udl file using the same ‘User ID’ and ‘Password’ specified while generating the Azure Key Vault URL.


  • Make sure following ‘Firewall settings’ made to your Azure SQL server.
    • Open the ‘SQL Server’ from Azure Portal and click on ‘Show firewall settings’
    • DES_26
    • Make settings as below
    • DES_25
  • Now try validating the Data Export Service’s ‘Key Vault URL’ from the ‘Profile’ and it should work.


Refer my Step by step configuring Data Export Service article on the usage of Data Export Service.


[Step by Step] Data Export Service – Replicate CDS data to Azure SQL Server Database

March 14, 2020 1 comment

For unversed, The Data Export Service (DES) is an add-on service available on AppSource that adds the ability to replicate data to target destinations such as Azure SQL Database and SQL Server on Azure virtual machines.

In this article, lets see how to replicate CDS data to Azure SQL Server Database.


  • Subscribe to Dynamics 30 days trial and get Office 365 account.
  • Connect to Power Apps maker portal using Office 365 account and create a simple Model Driven App with ‘Account’ entity.
  • Install ‘Data Export Service’ add-on from AppSource.
  • Subscribe to Azure 30 days trial using the same Office 365 account.


  • Azure SQL Server and Database.
  • Generate Azure Key Vault URL using Power Shell.

Installing ‘Data Export Service’ from AppSource:

  • From your Model Driven App, go to Settings -> Microsoft AppSource
  • Search for ‘Data Export Service’ and click on ‘Get it now’.


  • In the next steps, select your Organization and click on ‘Agree’.


  • Wait for the solution to get installed.


Configuring Azure SQL Server and Database:

  • Connect to your Azure Portal and create a new SQL Database Server  resource.


  • Post creation, copy the ‘Server name’ and ‘Server admin’ and ‘Subscription ID’, which you would need in next steps.


  • Now we need to create a new Database where you would replicate your CDS data to.
  • You can either create new Database from Azure Portal or from SQL Server Management Studio (SSMS). I am using SSMS to create the new Database.
  • Connect to Azure SQL server from SSMS using ‘Server name’ and ‘Server admin’ details captured in previous steps.


  • Create a new Database and copy the name (i.e., DES in my case).


  • Now go to Azure Portal and open the DES SQL database. Click on ‘Connection Strings’.


  • Copy the ‘ADO.NET’ connection string which you would need in next steps.


Generate Azure Key Vault URL using Power Shell and create Export Profile:

  • To connect to Azure SQL Server Data Export Service(DES) requires the SQL Server connection string.
  • DES will not accept the plain connection string.
  • DES accepts only Azure key vault URL with connection string stored as Secret.

As a standard practice, we configure Azure Key Vault URL using PowerShell script using following steps:

  • From the Model Driven App, go to Settings -> Data Export
    • Note: Make sure you disable pop-up blockers.
  • Click on ‘+New’ to create ‘Export Profile’.


  • From the pop-up, fill the details other than ‘Key Vault URL’ and click on information icon.


  • Copy the PowerShell helper script from the pop-up.


  • Now open the ‘Windows PowerShell’ and open a new window.
  • Paste the PowerShell helper script copied from previous step.
  • In the ‘PLACEHOLDER’ section provide the details specific to your Azure subscription.
    • $subscriptionId – Use the copied value from previous steps.
    • $keyvaultName – Your desired name.
    • $secretName – Your desired name.
    • $resourceGroupName – Either use existing or new. If a resource group doesn’t already exist a new one will be created.
    • $location – provide the location (i.e., East US/West US/…)
    • $connectionString – Use the copied value from previous steps.
    • $organizationIdList – Dynamics organization ID. From the Model Driven App, go to Settings > Customizations > Developer Resources. The organization Id is under ‘environment Reference Information’.
    • $tenantId – You can get it from ‘Azure Portal -> Azure Active Directory -> App registrations -> Endpoints‘ by copying the highlighted value as below.
    • DES_16
  • Once all the required details provided, your PowerShell looks as below.


  • Run the script which creates a new Azure Key Vault. You should get output as below.


  • Now that the ‘Key Vault URL’ is formed, copy the value from Azure Portal -> Key vaults -> Secrets’


  • Go back to the DES ‘Data Export Profile’ pop up and paste the ‘Key Vault URL’.
  • Click on ‘Validate’ to make sure the connection works.


  • Click ‘Next’ and pick your CDS entities which would want to replicate to Azure SQL.


  • As a last step click on ‘Create & Activate’ to complete the set up.


  • Give it sometime and you should see the Metadata tables and ‘Account’ entity tables created in your target (i.e., Azure SQL Server).



  • Data Export Service can be used with model-driven apps in Dynamics 365, such as Dynamics 365 Sales and Customer Service.
  • Only entities that have change tracking enabled can be added to the Export Profile. Enable change tracking to control data synchronization
  • To use the Data Export Service the model-driven apps in Dynamics 365 and Azure Key Vault services must operate under the same tenant and within the same Azure Active Directory.
  • The Data Export Service does not drop (delete) the associated tables, columns, or stored procedure objects in the destination Azure SQL database when the following actions occur and these items must be dropped manually.
    • An entity is deleted.
    • A field is deleted.
    • An entity is removed from an Export Profile.

Refer article to know more about Data Export Service. To troubleshoot connectivity issues refer article


[PowerApps Portal (preview)] Build your first portal

August 10, 2019 1 comment

PowerApps Portalsprovides ability to build low-code, responsive websites which allow external users to interact with the data stored in the Common Data Service.

Refer article for introduction. PowerApps Portals are in Preview now and lets see how to get started with a simple portal.


Steps to build your first Portal:

  • Login to PowerApps maker Portal
  • Pick the right ‘Environment’. Refer ‘Notes’ section below to know more about ‘Environments’.
  • Click on ‘Portal from blank (preview)’ link.


  • In the pop-up, fill ‘Name’, ‘Address’ and ‘Language’ and click ‘Create’.


  • Portal provisioning takes time and you will be notified once done.


  • Post provisioning, click on ‘Edit’ which will redirect you to Portal editor.


  • You get pre configured ‘Home’ page and ‘Child Pages’.
  • To add a new Page,
    • Either click on ‘+New page’ from ribbon
    • Or Right Click , ‘Home’ and add a New Page.


  • I have added a new ‘Accounts’ page and filled the details on the right side ‘Component’ panel.
  • To create a new ‘Account’ form, click on ‘Form’ and choose Entity, Form and Mode from the ‘Component’ panel.


  • To add a new ‘Entity List’ control, click on ‘List’ and on the right hand side, select ‘Entity’ and ‘Views’
    • Note: In the screen below, I’ve added an existing ‘List’. The properties are same for new ‘List’ as well.


  • To map the Account ‘Form’ with ‘List’, set properties as below


  • At any point of time, to view the changes, click on  ‘Browse website’ on top right corner.
  • Home Screen


  • Accounts Screen



  • To use the Dynamics CE entities, you have to select the CE ‘Environment’ in your maker portal, before the start of Portal creation.
    • A ‘default’ environment gets created by default. If you pick ‘default’ environment, you will need to create a new Environment with CDS database.



New Environment

  • We can still create Portal from the ‘Dynamics Admin Center’.


  • PowerApps portal got ‘’ as domain and regular portal will be of ‘’ domain.


  • You can still create/update portal components (i.e., Entity List, Forms, Web Templates) from Dynamics web application.
  • Clear cache using ‘/_service\about‘ is still available in PowerApps portal.





Office 365 Groups + Dynamics 365

July 6, 2019 1 comment

In Dynamics 365 online, records can be owned by ‘Office 365 Groups’. Refer my previous article and following are quick notes.

  • The administrator can create Azure AD group teams that are associated to the Azure AD groups in each of the Customer Engagement and Common Data Service environments and assign a security role to these group teams.
  • When members of these group teams access these environments, their access rights are automatically granted based on the group team’s security role.

If you notice, to get the benefits of AAD group ownership, Users must have assigned ‘Dynamics 365 Customer Engagement Plan’ license.

What if the User don’t have ‘Dynamics 365 Customer Engagement Plan’ license. For example, when a sales team has a major opportunity requiring input from several people who don’t have access to Customer Engagement apps.

Office 365 Groups provides a single location to share documents, conversations, meetings, and notes.

Office 365 Groups can be enabled for any entity.

Install Office 365 Groups solution:


  • Install ‘Office 365 Groups’ solution.


Enable entities for Office 365 Groups:

  • Connect to your Dynamics instance.
  • Go to Settings -> Office 365 Groups
  • Add required entities.


Create Office 365 Group:

  • Make sure users must have ‘Office online’ license and Mailbox configured.


  • Create a Group and add the Users.


  • Users get notifications in their Outlook web app
  • From Outlook, Users can click on ‘Discover’ to explore more available groups.


  • Also a new SharePoint Sitemap collection gets created for each Group, which allows Users to share documents.


Use Office 365 Groups from Dynamics App:

As we enabled ‘Office Groups’ for ‘Account’ entity

  • Open any account from Dynamics App.
  • From sitemap, click on ‘Office 365 Groups’
  • You can either ‘Create a new group’ or use an existing group.


  • Once the configuration is completed, you can start Conversation and share documents which would be available for all members of the group.





Working with Azure Active Directory (AAD) Groups in Dynamics Customer Engagement

July 6, 2019 1 comment

In Dynamics 365 online, along with ‘Owner’ and ‘Access’ type, following types have been introduced in ‘Teams’.

  • AAD Security Group
  • AAD Office Group


With these new ‘Team Types’, records in Dynamics 365 can be owned by AAD Groups.

Lets understand what is Azure Active Directory (AAD) group and what’s the significance of making AAD group as owner of a Dynamics record.

  • The administrator can create Azure AD group teams that are associated to the Azure AD groups in each of the Customer Engagement and assign a security role to these group teams.
  • When members of these group teams access these environments, their access rights are automatically granted based on the group team’s security role.

Create AAD Group:

  • Make sure you have Office 365 account (Subscribe to 30 days trail here)
  • Connect to Microsoft 365 Admin Center using Office 365 credentials.
  • Create Users and assign ‘Dynamics 365 Customer Engagement Plan’ license.


  • Now connect to Azure Active Directory Portal
  • Create a new Group of type ‘Office’ and add the Users.
  • Copy the ‘Object ID’ which we need in next steps.


Create Team of type ‘AAD Office Group’:

  • Connect to Dynamics instance
  • Navigate to Settings -> Security -> Teams -> New
  • Select ‘Team Type’ as ‘AAD Office Group’ and paste the AAD Group ‘Object Id’ copied in above section.
  • Save and assign a role.


Access the Dynamics as ‘AAD Group’ Team Member:

As we created a AAD Group and a Team in Dynamics App with ‘Sales Manager’ security role, it’s time for ‘Test User 1’ to access the Dynamics Application.

  • Login to Dynamics Application as ‘Test User 1’
  • Post login, Dynamics App greeted me with ‘You need a Microsoft Dynamics 365 security role to continue’ message.


  • From the message, its clear that Dynamics App expecting ‘Test User 1’ to have a User level Security role and not honoring the Team level Security Role which he is member of.
  • We can resolve this issue by assigning ‘Sales Manager’ role to ‘Test User 1’ which means for every User of AAD group we have to on-board by assigning them an individual security role.
  • But we can make ‘Test User 1’ access Application with out assigning a Role, as we got a cool ‘Member’s privilege inheritance’ feature introduced in ‘Security Role’.

‘Member’s privilege inheritance’ in Security Role:

  • Navigate to ‘Settings -> Security -> Security Roles’
  • Open the ‘Sales Manager’ security role.
  • Change the ‘Member’s Privilege Inheritance’ to ‘Direct User (Basic) access level and Team privileges‘ and Save.


  • Refresh the Dynamics application, ‘Test User 1’ can access the records and application.


  • By setting ‘Member’s Privilege Inheritance’ to ‘Direct User (Basic) access level and Team privileges‘ makes the ‘Sales Manager’ role as both User role as well Team role.
  • This feature eliminates the need of AAD Admin to assign User level roles to individual group members.

Assign Records to ‘AAD Group’ Teams:

  • We can assign the record to ‘AAD Group’ Teams similar to ‘Owner’ Teams.





D 365 Managed Solutions – Delete Components from target instance using ‘Stage for Upgrade’ option

July 3, 2019 1 comment

Assume that you have exported and imported a Managed Solution ‘A’ from DEV to TEST. The solution ‘A’ has 2 entities (E1 and E2) and got imported to Test instance.

Now, because of a change in requirement, you no longer required E2 entity and need to delete that from TEST instance.

How would you delete E2 using Solutions approach?

With ‘Upgrade Solution’ behavior of ‘Managed Solution’ (Refer flow below), solution components only gets updated but not the deletion of the components.


And the answer to this is ‘Stage for Upgrade’ option of ‘Managed Solutions’.

Lets take following scenario to understand it better

  • DEV instance has an entity ‘Interest Rate’
  • Export a Managed solution with ‘Interest Rate’ entity from DEV and import to TEST.
  • Delete the ‘Interest Rate’ entity from DEV
  • Prepare a Managed solution and import to TEST using ‘Stage for Upgrade’ option.
  • ‘Interest Rate’ entity should get deleted from TEST

Below is my TEST instance which has managed solution by name ‘Loan Management’ got installed with ‘Interest Rate’ entity.


Steps to use ‘Stage for Upgrade’ option:

Below are the usage steps of ‘Stage for Upgrade’ option.

Export Solution from DEV:

  • Connect to the DEV instance and delete the ‘Interest Rate’ entity.


  • Increase the version number of the ‘Loan Management’ Solution and export as Managed Solution.


Import Solution to TEST:

  • Connect to TEST instance and click on ‘Import’ solution and make sure versions are different.


  • Click ‘Next’
  • Select ‘Stage for Upgrade’ checkbox and click ‘Import’


  • Up on successful import, As a last step, you would get ‘Apply Solution Upgrade’.


  • Don’t click the ‘Apply Solution Upgrade’ yet as we need to check few things.
    • Note: You can always click ‘Apply Solution Upgrade’ and complete the upgrade. I refrained to do as I want to explain more.
  • Close the ‘Import Solution’ wizard.
  • Now on TEST instance, go to Advanced Find -> Interest Rate and you will still get the entity and data. Which means the Upgrade hasn’t happen yet.


  • Lets complete the Upgrade by go to Settings -> Solutions and you will see 2 solutions
    • Solution with ‘_Upgrade’ is Stage solution.


  • Select the old solution (i.e., Solution with no ‘_Upgrade’) and click on ‘Apply Solution Upgrade’.


  • The process takes time and once completed you would see a single solution with increase in version.


  • Now, go to Advanced Find -> Interest Rate and you will not get the entity and data.


Refer this White Paper for more details on Solution Life Cycle Management.


[Step by Step] Dynamics 365 – Microsoft Forms Pro Survey Solution

Microsoft Forms Pro is an enterprise survey capability powered by both Office 365 and Dynamics 365.

Forms Pro is built on Microsoft Forms, and it offers new capabilities that make capturing and analyzing customer and employee feedback simpler than ever.

‘Forms Pro’ will eventually replaces the existing Dynamics Voice of the Customer Survey

Steps to subscribe:

  • Connect to
    • Either subscribe for a free 30 days trail or alternately you can also use Dynamics 365 30 days trails credentials.
  • Provide your Office 365 Email ID and click on ‘Submit’ to complete registration.


Create a new Survey:

Once you completed the subscription, from the FormsPro portal

  • Click on ‘Create a new form’ to configure your survey.


  • Click on ‘Theme’ to choose the Survey Theme. This is an optional step.
  • Provide the Survey Details like Name and Description.


  • Next, to add Survey questionnaire, click ‘Add Option’ to add the available control options


  • I’ve chosen ‘Choice’ control for this simple survey.
  • Fill the Questions and Choices.
  • Click on ‘Preview’ to preview the survey in both Computer and Mobile.


Send The Survey:

After your survey is ready, send it to your respondents and collect their feedback. You can send your survey in the following ways:

  • Email: Send the survey link by using the built-in email capability.


  • Microsoft Flow: Configure a business trigger by using Microsoft Flow to send the email.
  • Embed: Embed the survey in a webpage.
  • Link: Copy a link to the survey that you created, and paste it into a shared area.
  • QR code: Send a QR code for your survey.

Respond to Survey:

  • To show how the Survey would render to recipients, I’ve used ‘Link’ option and copied the Survey URL in browser tab.
  • It renders as follows.


  • Choose your response and ‘Submit’.

Analyze Responses:

  • Click on ‘Responses’ tab to analyse the responses.


Survey Settings:

Click on ‘…’ and ‘More Settings’ to configure Survey settings.

  • To deactivate the Survey (i.e.,Stop collecting the responses) uncheck the ‘Accept Responses’ checkbox.


  • Deactivated Survey would show up as follows to Recipient.


  • You can set the Date range of the Survey.

Entities that get added:

Following entities get added with ‘Form Pro’ survey solution



Refer this article for more details.