Showing posts with label Dynamics 365 CE. Show all posts
Showing posts with label Dynamics 365 CE. Show all posts

Sunday, September 15, 2024

D365CE | Alternative to Input Mask PCF control

It's been quite a while since the input mask PCF control has been retired in Dynamics 365 CE.

I recently had to implement a mask on phone number fields and was disappointed to learn that Microsoft had retired the control and hasn't offered any alternatives.

So I had to look for other options and I came across this Check Phone Number PCF control which I found it to be very comprehensive. You can read the full documentation on github.

Steps and options to configure

  • Once you download and import the solution, you can select the field on which you want to enable the component.
  • The Output format helps you transform to the following:
    • International: +91 87855 85545
    • National: 87855 85545
    • E164: +918785585545
Note: I prefer the E164 format. Sure it isn't readable, but it is easier during search because it is impossible to remember the correct format for all the country codes. Having said that, it depends if you're implementing this for only a particular country, then an International or National format could work better for you.
  • You can setup the default country code. When you enter the number without any code, a default country code is automatically setup.
  • You can also setup a list of allowed and excluded country codes. To setup the allowed country codes, you can follow the list here or check the screenshot for an example: ISO 3166 (alpha 2) country codes needs to be used.
  • You can also specify whether you want to phone call button to be shown and which app must be the default calling app.

Here are some sample numbers I have entered for UAE, Italy and India.



Hope this helps!

Wednesday, June 19, 2024

All about Addresses in Dynamics 365

We had a requirement regarding addresses that had to be addressed in Dynamics 365 CE. I thought to share it.

Requirements

  • To be able to select the following fields as a dropdown, preferably a lookup. Fields: District, City and Country because the District and City list may continue to expand in the future.
  • To be able to add multiple addresses against the Account. 2 or more.
  • In case we need to update an address, there must be a provision in the Address table to select the District, City and Country as well. i.e., these fields must be available in the Address table as lookup fields.
These requirements sound simple to implement, however the address entity lacks flexibility due to which we had to think of a workaround.

Things I have learnt about Addresses

  1. On the Account we can add maximum 2 addresses. Address 1 and Address 2. Let's call this embedded address. If we need to add a 3rd address related to an account, we need to create a new address record (in the related system Address table).
  2. While the Country and State fields are available, these are text fields in the embedded address and related system address table.
  3. The related address table is non-customizable. We cannot add additional lookup fields in that entity.
  4. When an Account or Contact record is created, blank Address records are automatically created and linked to the Account (or Contact). These are associated with the embedded address records and are numbered as "addressnumber" 1 and 2. addressnumber 1 represents invoice address and 2 represents delivery address by default.
  5. The system Address tables don't have lookup to Account or Contact. The relationship is identified by 2 fields namely, "objecttypecode" and "parentid". objecttypecode recoginzes if this related address is linked to "Account" or "Contact" and parentid is the actual GUID value of the Account or Contact.

Workaround to address the limitations

Since the system Address entity is linked and tightly integrated in Dynamics 365 CE, we couldn't replace the system Address table with new custom Address table. I am saying this because, system Address primarily linked to Account and Contact, but when we update the address on Lead and qualify it, the embedded Address and correspondingly the system Address records are also updated. Also, indirectly linked with Opportunities, Quotes and beyond. If you're considering dual write integration with Dynamics 365 F&O, these are again tightly integrated there.

Having analyzed this, we went ahead with a custom Address entity but ensured we are keeping the system Address entity records in sync as well.

What did we do?
  1. We created 3 custom lookup fields called District, City and Country on the Lead, Account and Contact tables for easy data entry from users perspective. When the user selects these fields, we populate the OOB District, State and Country text fields and those are automatically updated in the related system address records.
  2. We introduced a custom address entity and ensured the user uses this for their data entry and viewing. When the user updates the embedded address, we also need to create custom address records related to Account.
  3. When the custom address records are updated, we need to update the related system address entity records.
  4. When a new custom address is created, we create a related system address entity record and link it with the respect Account by updating the objecttypecode and parentid.
  5. When the custom address is deleted, we need to also delete the related system address record and update the embedded addresses if the addressnumber matches. By update I mean we had to clear the values in the embedded address fields on the Account record.
  6. For the most part we can treat system Addresses as a target only, as they are a copy of the custom Address entity data. We can set up a business process and data entry process in such a way that system addresses are not updated, however, if some process we don’t know about updates a system Address, it needs to get reflected up to the custom Address as well.
Hope that helps!

Monday, March 11, 2024

How to use Power Query in Excel and connect to D365 CE (Part 1: Legacy)

Power Query is a robust tool that can be used to connect to the online services (like, Dynamics 365, SharePoint Online, Azure SQL DB, etc.) 

Below are the steps to connect to D365 CE:

  • Open Excel
  • Click Data > Get Data > From Online Services > From Dynamics 365 (online)
Get data in excel from Dynamics 365 CE
  • Go to Advanced Settings in Dynamics 365 CE.
Advanced Settings to access classic settings in D365
  • Select Customizations > Developer Resources
  • Fetch Web API URL from developer resources.
Web API URL
  • Enter in the dialog box (this is a legacy connector)
D365 Online legacy connector
  • Click Organization Account and Sign in
Sign in to connector
  • Once sign in is successful, click Connect.
  • The Navigator will show all the tables that one can use to develop pivot tables, pivot charts etc.
  • Select one or multiple tables that you want to use and transform and load the data into Excel.
Here are the steps to use the Dataverse connector.

Hope it helps!


How to use Power Query in Excel and connect to D365 CE (Part 2: Dataverse connector)

Microsoft has a released a new way to connect to Dynamics 365 via the Dataverse connector. To use the dataverse connector follow these steps:
  • Open Excel > Data > Get Data > From Power Platform > From Dataverse
Dataverse connector in Excel

  • Login using the user who has access to the data.
  • Select one or multiple tables as required.
  • Transform and Load data.
Hope it helps!

Wednesday, December 13, 2023

Dual-Write | Update the Delivery Address in Sales Order from D365 Sales to F&O

We have Dual-Write enabled in one of our customer sites and we are syncing sales orders from D365 Sales to D365 F&O. The issue that we were facing is, when we update the delivery address in D365 Sales, i.e., on Order form (in CE), we have a field called "Choose Ship to Address", while the address is updated on the Order form (in CE), it doesn't update the delivery address in D365 F&O Sales Order form.

Note: for the Address integration to work via dual-write, you need to enable GAB (Global Address Book) app.

After some R&D, we cracked it.

We wrote a workflow to update the Delivery Address Location ID based on the address selected in the field "Choose Ship to Address".

Note: Delivery Address Location ID is also a field on the Order form in D365 Sales. By default you can see that under the Integration tab.

D365 CE Sales Order form

Below is the screenshot of the workflow that was created. Workflow to be created on the Order table and the trigger is when Choose Ship to Address is updated.

Steps:
Condition: if Choose Ship to Address contains data
Update: Delivery Address Location ID (Order) = Location ID (Address)


I am not mentioning the Dual-Write table maps here, but we were using OOB tables maps on the Order table. In case you have updated with custom table maps, you may want to check it (in case the address is still not updating).

Hope this helps!

Tuesday, October 17, 2023

Troubleshoot Dual-Write Issues in Dataverse and F&O Apps

I have written couple of articles on Dual-Write lately. Mostly on issues that we've been facing lately and how we have come to fix them. These post is where I bring them all together. You can think of this blog post as a summary of all the issues and fixes until now and will continue to update the same in the future.

Also certain topics don't need a separate post. Will write about them here directly. Starting below with the posts that I have written previously.

Previous Posts


Unable to create a Quote in Dynamics 365 Sales App

This was because we were receiving an error

"Write failed for entity CDS sales quotation header with unknown exception - BOX API can't be used from non-interactive sessions."

 Click here to read the post.


Privileges required for dual-write initial sync

There are certain security roles and privileges required to perform initial sync of tables via dual-write.

Click here to read the post.


Unable to delete postal addresses in Dynamics 365 Sales

This happened because there were related records, and I wasn't able to delete them too.

Click here to read the post.


Unable to create an order from a quote in Dynamics 365 Sales App

Here is the precise error that I was receiving.

"Write failed for entity CDS sales order lines V2 with unknown exception - Inventory dimension Site is mandatory and must consequently be specified.\nUpdate has been canceled."

Click here to read the post.


Other Issues


Unable to load the dual-write module in a Finance and Operations App

If you're unable to open Dual-write page by selecting the Dual Write tile in the Data management workspace, most likely data integration service is probably down.

For this you would need to create a MS support ticket and request a restart of the data integration service.

Wednesday, September 27, 2023

Unable to update Order Product using Workflows in D365 CE

Here is a note for y'all, something to keep in mind when working with workflows in Dynamics 365 Customer Engagement (D365 CE).

You can create a workflow (i.e., initiate a workflow) on the following tables:
  • Opportunity Product
  • Quote Product
  • Order Product
But when you add a step to Update record within the workflow, you'll notice that you cannot update the above mentioned tables (entities). You can however update any of the related tables linked with these tables.

Add Price List Items too into the above mix. Can create a workflow based on this table, but cannot update Price List Item record using a workflow step.

I believe the workaround would be to use Power Automate flows instead of Workflows. I haven't tried this as yet, but I believe it is possible.

Hope it helps!

Thursday, August 17, 2023

Dual-Write | Unable to create Order from Quote in D365 CE Sales

While converting a Quote into an Order in D365 CE Sales, I was receiving an error message that went like:

Dual Write core application error-Dual Write core application error-Unable to write to Finance and Operations apps due to following error(s): {"Write failed for entity CDS sales order lines V2 with unknown exception - Inventory dimension Site is mandatory and must consequently be specified.\nUpdate has been canceled."} Please rectify your data and try again. If issue persists after multiple retries, please contact your system administrator.

Since dual write is seamless integration and data synchronization across D365CE and D365FO and as the default shipping site and warehouse is required while creating the Order in F&O, we need to ensure that the value is populated prior to creating the Sakes Order. 

Solution

While encountering an error can be frustrating, the good news is that there is a solution.

In this case, the remedy involves performing relationship mapping between the Quote and Order entities. Relationship mapping essentially defines how data is transferred between related entities.

Steps:

  • Open the solution in D365 Sales App. Ensure you've added the following components:
    • Quote and Order tables
    • 1:N relationship between Quote and Order
  • Open the relationship and click on Relationship Mapping
  • Add a new Map and select Default Shipping Site and Default Shipping Warehouse.
  • Now try to convert the Quote into an Order.
It should be smooth sailing now.

Hope that helps!

Friday, August 11, 2023

Error when qualifying Lead into Opportunity | D365 Sales

There could be many reasons and most of it could be found when you perform an online search, but none of those suggestions fixed my issue. When I was qualifying the Lead into an Opportunity, it is showing the following error:

OrganizationServiceFault

And that is it. No other details about the error. No error log, not description of the error, no error code. Nothing!

Resolution

My user didn't have system administrator, but a custom role was assigned to the user. I took some help from my technical team who did a little bit of digging and came across this below message.

Entered Microsoft.Dynamics.SCMExtended.Plugins.Plugins.LeadPrimaryContactPostCreate.Execute(), Correlation Id: 021c0dc2-3e1e-46e5-81c0-b1524ae09ed2, Initiating User: e7925424-1da4-ed11-aad1-002248a13b63

Exception: System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: Principal user (Id=xxxx5424-xxxx-ed11-xxxx-002248a1xxxx, type=8, roleCount=4, privilegeCount=1064, accessMode=0, MetadataCachePrivilegesCount=9751, businessUnitId=0b2c4b59-0e31-ee11-bdf4-000d3aba3d29), is missing prvReadSolution privilege (Id=b64e92c8-5d2a-4052-a026-1b73eff9cebf) on OTC=7100 for entity 'solution' (LocalizedName='Solution').

I provided a Read privilege to Solution table under; relevant Security Role > Customization > Solution, and it worked.

Hope it helps!

Friday, August 4, 2023

Dual-Write | Unable to delete Postal Address Collections in D365 Sales

If you're unable to delete Postal Address Collection records in Dynamics 365 Customer Engagement Sales App, most likely the reason is there is related Postal Address records under that.

When I try to delete Postal Address records using Advanced find, I couldn't find the Delete button on it. If I open the record (for Postal Address), still couldn't see the delete button.

I used Bulk Record Deletion job to delete Postal Addresses and then I could go ahead and delete Postal Address Collections.

What are these tables you ask? These are added when you implement dual-write and install GAB solution in the dataverse. If the 2 environments are in sync, it is best to delete these records in F&O and let dual-write handle the deletion in D365 CE Sales.

We were in a situation where the F&O environment wasn't in sync with CE and we had to remove these records manually in CE only.

Hope it helps!

Dual-Write | Privileges required for Initial Sync and other considerations

Recently we were doing an initial sync for tables between Dynamics 365 Finance & Operations apps and Dataverse (Dynamics 365 Customer Engagement), and we received an error that read:

Reason: Bad Request, Header x-ms-client-request-id 8aef8aa3-2a01-493e-a0d7-347ce560e50d, Principal team (Id=b7e1929e-xxxx-xxxx-aad0-xxxx489fxxxx, type=9, teamType=0, privilegeCount=0, MetadataCachePrivilegesCount=9751, businessUnitId=b5e1929e-xxxx-xxxx-aad0-xxxx489fxxxx), is missing prvReadmsdyn_globalproduct privilege (Id=539cf392-xxxx-xxxx-b258-xxxx719b7d93) on OTC=10835 for entity 'msdyn_globalproduct' (LocalizedName='Global Product') in Business Unit: unqxxxx (Id=b5e1929e-xxxx-xxxx-aad0-xxxx489fxxxx). context.Caller=691e1af2-xxxx-xxxx-aad1-xxxx489axxxx

Sometimes when you're excited and hurrying into the action, you miss the fine details and here are the fine details.

Security role that is required

Every user in a customer engagement organization with dual-write must be given Dual-Write Runtime User role. Without this role, users will be unable to create any rows in tables in customer engagement organization.

Company and currency exchange tables are global in nature and all dual-write users require read access to these 2 tables. To provide access, all dual-write users must be given Dual-Write App User security role. If a user does not have this security role assigned to them, they will not be able to read tables that contain Company and Currency.

Also access is required to entities (tables in dataverse) that are in scope of dual-write. However which privilege is required is not very clear. What you can do is to create a custom role and provide the relevant privilege to the tables in scope of your dual-write integration. We had provided Create, Read and Write which worked for us.

PS: I do believe Read privilege should be enough. Comment down below if you have an experience regarding the exact privilege required.

Here is the link to other considerations before performing initial sync & setup dual-write security roles and permissions.

Hope this helps!

Friday, July 14, 2023

Dual-write | Unable to create a Quote in Dynamics 365 Sales

We have enabled Dual-write in one of our environment's and we have the Quote table in running status for dual-write sync however, when we try to create a Quote in D365 Sales, for some reason it was failing and the error message was like below.

"Write failed for entity CDS sales quotation header with unknown exception - BOX API can't be used from non-interactive sessions."

To approach this, we ensured that we have followed and setup the prerequisites mentioned in Microsoft's documentation about Quote-to-cash in dual-write

Also we were using Trade Agreements pricing engine and the setup for that is mentioned here: Sync on-demand with SCM pricing engine

Resolution

What we did was, we went to form "Sales and marketing parameters" in Finance and Operations to check if the field "Create opportunity for sales quotation" is set to Prompt.

If it is set to Prompt, you need change to another value based on your requirement. We changed this to No and tried creating the quote. It worked!


There could be many reason's for this failing and this is what has helped up. Let me know in the comments below if it was different for you and how did you resolve it.

Hope it helps!


Tuesday, March 28, 2023

How to register for ClickDimensions (D365 CE)

ClickDimenions is a marketing automation tool for Dynamics 365 Customer Engagement (CRM). Tool wouldn't be the right terminology as it is a very comprehensive application to address all your marketing needs.

While the online help and guides provided by ClickDimensions are very detailed, I thought to summarize this in below few steps to register and install the app in your environment.

Step 1

Select the data center region and deployment type. The data center region must be the same or closest to your D365 CE data center region.


Step 2

Select the authentication method. You can check out the various authentication methods in this article from ClickDimensions (Register for ClickDimensions).

The contact email that you enter here is the email where the installation files / solution will be sent to.


Step 3

You will be asked to login and authenticate the app to access in the environment.

Step 4

Once the app access is provided, a notification is sent to ClickDimensions and they will generate the solution file and share it with the person mentioned in the Contact Email of the registration.

Step 5

Download the solution and import into D365 using the Power Apps Maker at https://make.powerapps.com.

Tuesday, March 21, 2023

Microsoft Dynamics 365 Customer Engagement releases versions

Here is the list of all the release versions up until version 9.1 https://support.microsoft.com/en-us/kb/2925359

For the latest Microsoft Dynamics 365 release notes, visit Released Versions of Dynamics 365 for Customer Engagement here: https://learn.microsoft.com/en-us/dynamics365/released-versions/Microsoft-Dataverse#all-version-availability

Monday, March 13, 2023

D365 CE Preview Feature (Collaboration and Co-authoring)

One of the most common ask from our customers is, does the app block one user from accessing or making changes to a record if another user has opened the record on their screen?

While this is not quite like restraining a user from updating a record because of multiple users accessing it, this feature does allow you to see the other folks that are collaborating on the same record.

You’ll need to enable this in your environment to take advantage of this feature.

  • Open https://admin.powerplatform.microsoft.com
  • Select the environment where you want to enable the functionality.
  • Click on Settings on the command bar (located on the top of the screen).
  • Expand the Product section and select Features.



  • Scroll down to Collaboration section on the left side of the screen.
  • Turn on 'Show other people when they're using the same form'.
  • Now when 2 or more users access the same form, you'll see the co-presence indicator showing all the users. It is very similar to what we see on Microsoft 365 Apps (Word, Excel, etc.).
  • This is only enabled for Account, Contact, Opportunity and Case forms during preview.



Here I would also highlight 2 other features that you can enable.
  • You can also see you can initiate a Teams meeting directly from appointments. For that flip the switch 'End users can add and join Teams meetings from appointments in model-driven app' under the Collaboration section.
  • There is also co-authoring for model-driven apps where you can see the users making changes to forms, views or dashboards using the power apps maker portal. With coauthoring you can see who is working on the same app at the same time, and you can see their applied changes in real-time.
Interesting!

Friday, March 3, 2023

2 Lesser known facts about Dynamics 365 CE (CRM Sales)

 While exploring the default forms and views for Dynamics 365 Sales I understood few facts. It is strange how even after years of experience on the product there are still some things that you have never explored.

I guess the main reason is that these don't impact any implementation in a major way, hence you tend to ignore them, and only find out by accident, like I did. So here are the facts.


1. Discount List forms and views cannot be customized


That's right. When you try to add form and view components for the Discount List table, you'll see that there are no components to be found here. 😲




2. Cannot add some fields on Price List Item views 


When I was expanding the default price list item view to show certain columns like Created By, Created On, Price List (Lookup), Modified By, Modified On. These fields are not available to add on the view, or even on the form.

Did you know?

Comment down below if there is something you discovered that was strange to you.

Monday, May 23, 2022

D365 CE: How long does a CRM implementation take or what are the various project stages

dynamics 365 crm project implementation

This is a very common question you're asked by your prospective customers, the answer to which is usually never straight forward. This is true if you're implementing Dynamics 365 CE/CRM or any other enterprise application.

Also remember that your client also isn't expecting a short answer like, 6 months, or 11 months. If they are, then that's a clue to leave that premise immediately (just joking). In this case the client needs to be educated on what to expect during the course of the project and prior to go-live.

According to my experience here is what you can say to your customer:
  • CRM implementation happens in various stages.
  • Before we go any further we first need to discuss the scope of the project and it's objectives. This is a very high level scope, something that management envisions and aspires to achieve by implementing a CRM solution.
  • This is further detailed into business requirements. These requirements are specific to departments or various teams that will be using CRM. Each may have broad understanding of the requirements or some may even be very specific. It is also important to understand at this level, what is currently being followed in terms of your internal processes and what part of the process is required to be implemented on CRM.
  • Once the above is clear, there are various project stages:
    • Requirements Phase
      • The requirements (we just spoke about in the previous point) is to be documented into a Business Requirement Document (BRD).
      • This is converted to a Functional Requirement Document (FRD).
    • Solutioning and Design Phase
      • Gap/Fit document: One of the documents to produce during this phase is the gap/fit document. This will outline any gaps in the solution being implemented and it is also good to identify the efforts that will go into delivering it.
      • This is then further detailed into the Functional Design Document (FDD).
      • and Technical Design Document (TDD).
    • Development and Environment Preparation
      • The above documents are handed over to the technical team to start working on the solution.
      • In parallel the infra team can also work on setting up various environments required like Development, SAT and Production Environments. Install / provision the Application.
      • Configure the application and workflows and if it is bespoke then there is a level of customization too.
    • Internal Testing
      • Data cleansing and data formatting.
      • Importing the data.
      • Testing the system.
    • CRP stage or Conference Room Pilot / Class Room Pilot
      • This is when the client will be demo'ed the application with the customized requirements. In most cases this must be a 70-80 % fit based on customer requirements. Expect some changes, few more insights and specific requirements during this stage of the project.
      • Once those gaps are also filled, the product is demo'ed again with the fixes and we move into user acceptance.
    • User Acceptance Test
      • This is when the key users will test the product.
      • If all went well, the we move into training.
      • In parallel a user guide documentation will also be worked upon before the training.
    • Training and Go Live
      • Administrator training
      • User Training
      • The training is usually provided by the key users to all the other users. We insist customer's key users to takes this up which will give them a better grip over the product. 
      • And finally go-live
Having mentioned the above, these are steps on a high-level, and all may or may not be required based on the size of the project and resource availability. By resource availability I mean human resource at both end, the client as we as the implementation partner.

From my personal experience it is very important to understand the requirements and documenting them. This is the most time consuming stage of the project. The other time consuming stage is the data cleansing and preparation. If the customer is using an existing system, it becomes much easier. If you're tasked to upgrade a customer from Excel into a system, this can become a nightmare. I can write another blog to explain how to plan data migration for a project.

Training and user acceptance can also take up time as users must get used to a new way of working and that can take some time. It is important as an implementation partner to hand hold them and repeat processes again and again until each user on the team gets it. This is also the most important step of the project because if they don't understand how to use the system, the adoption will be low and the whole project might fail.

Let me know what your experiences have been in the comments below.

Hope this helps!

                    Tuesday, May 17, 2022

                    Auto number sequence number skipped in Dynamics 365 CE / CRM

                     


                    While testing auto-number functionality in one of our project, we noticed that the auto-number sequence skips, in case of an exception or error while creating the record.

                    For example: If the previous record sequence number was 1001, the next record sequence number must be 1002. However, if there was an exception while creating the record, the record isn't created in this case. Now if the user creates another record (without exception), the record sequence number would show 1003 (instead of 1002), as that number would have been skipped.

                    After going through Microsoft's documentation we understood why this happens, as it is clearly mentioned that the number is incremented before the record creation is started and not after the record has been created.


                    You can access Microsoft's documentation by clicking here.

                    Hope that helps!

                    Monday, May 9, 2022

                    How to enable modern advanced find in model-driven apps: Dynamics 365 CE (CRM)

                    I recently came across this new feature to enable modern advanced find in model-driven apps. Thought to share with you all.

                    Note: When you enable the feature, the advanced find button that you usually see on the bar top right will be gone. There will be changes in the way you access and modify personal views. If you're ready to enable this for your organization, keep reading forward.

                    Old Experience:

                    New Experience (No advanced find icon):

                     

                    Steps to enable modern advanced find in Dynamics 365 CE (CRM)

                    Following are the steps:

                    • Expand Product and click on Features.
                    • Scroll down to Advanced find options and toggle the button to On. It will take a few minutes and enable the modern advanced find in your environment.

                    Now the question is how to access modern advanced find?


                    Access modern advanced find in Dynamics 365 CE (CRM)

                    To access, you need to click on the global search box and below you will find this option "Search for rows in a table using advanced filters".


                    Click this and you will see a flyout option from the right where you can select the entity (table). Click Continue and you'll have the option to edit filters.


                    Now you ask, how to manage personal views? Click on the View chevron icon. This will dropdown a list of views (both system and personal) configured. Personal views are shown with a person icon. To create, set default or delete personal views, click on Manage and share views.


                    Hope that helps!

                    Sunday, April 24, 2022

                    Power Automate: How to format a date column in Create HTML Table

                    I had recently written a post on how to populate the lookup value instead of the GUID in Power Automate. You can refer to the same blog post by clicking here.

                    I had formatted the Created On field too using the same steps as mentioned in that post.

                    Unit next time!