Wednesday, 26 May 2021

Dual Write configuration - Dynamics 365 Finance and Dynamics 365 Sales environments, with Dynamics 365 for Sales environment provisioning

Dear Friends,

It has been quite a while, since I got a chance to post something. This is one of the most common and critical requirements, having Dual Write configuration between Dynamics 365 Finance and Sales environments. Please find below hands-on experiences, tricks and tips to make it work.

Environment provisioning

·       Dynamics 365 FO environment can be provisioned. Deployable packages and licenses can be added if required.

·         Dynamics 365 CE environment can be provisioned, if required.

o   Login to “MS 365 Admin Center”.

o   Click “All admin centers”.

o   Click “Dynamics 365 Apps”.

o   Click “New” (if new environment required, else select an existing one)

§  Need to have “Dynamics 365 Customer Engagement Plan Demo for Partners” IUR license for partner; else Production or Sandbox environments cannot be created. IUR license can be redeemed using below link.

https://portal.office.com/Commerce/ProductKeyRedeem.aspx?paymenttype=1

§  Dynamics 365 apps cannot be enabled on trial environments.

§  Multi-tenant not supported as of now.

§  Fill all the required details and click “Next”.

§  Fill all the details, “Enable Dynamics 365 Apps” to be clicked.

§  Select “Dynamics 365 for Sales, Enterprise Edition App” or install it later.




§  Once environment is provisioned,

·         Environment can be opened by clicking “Open environment”.

·         Installed apps can be opened by the URL.

·         Clicking “Dynamics 365 Apps” shows all the apps installed, and new apps can be installed from there.


§  Sample data can be added during environment provisioning, or later by

·         Select the environment.

·         Go to “Settings”.

·         Go to “Data management”.

·         Click “Sample data”.

·         Click “Install sample data”.

  




Prerequisites for Dual Write linking process

·         FO environment need to be on PU 33 or higher.

·         In FO environment, go to “Azure Active Directory Applications” and create records with “33976c19-1db5-4c02-810e-c243db79efde” and “2e49aa60-1bd3-43b6-8ab6-03ada3d9f08b” values. These 2 are common application Ids for “Microsoft Dynamics ERP” and “Dynamics Data Integration”, and are required to be added for linking purpose.



·         In FO environment, go to “Data Management” workspace, click “Data entities” and make sure the entity list is populated.

·         Dual Write feature is currently behind the flight, need to enable flighting for demo environments by using below SQL.

INSERT INTO SYSFLIGHTING ([FLIGHTNAME] ,[ENABLED] ,[FLIGHTSERVICEID] ) VALUES ('EnableDualWrite', 1, 12719367)

·         In FO environment, perform IISReset.

·         Provide app consent by using below link and click “Accept”.

https://login.microsoftonline.com/common/oauth2/authorize?client_id=33976c19-1db5-4c02-810e-c243db79efde&response_type=code&prompt=admin_consent

·         Uninstall “Prospect to Cash” solution, if already installed.

·         Open CE instance, go to “Settings”, select “Users & Permissions”, click on “Application Users”.

 

·         Create a new user.

·         Add Application id – “00000015-0000-0000-c000-000000000000” and follow prompts to fill additional fields and save user account. This Application Id is for “Microsoft Dynamics ERP”, which will allow FO to connect to Dynamics 365 Sales.

·         Provide “System Administrator” rights to Application User via “Manage Roles”.



·         Add Application id – “2e49aa60-1bd3-43b6-8ab6-03ada3d9f08b” and follow prompts to fill additional fields and save user account. This Application Id is for “Dynamics Data Integration”, which will allow FO to connect to Dynamics 365 Sales.

·         Provide “System Administrator” rights to Application User via “Manage Roles”.

·         Go to “Advanced Settings”, select “Security”, click on “Teams”.

·         Switch to “All Owner Teams”.

·         Select the Root Business unit, provide “System Administrator” rights to the team via “Manage Roles”.

·         “Dual Write core solution” contains metadata for the entity maps and must be imported as a solution in CE instance.

·         “Dual Write Orchestration solution” contains additional master data scenarios mentioned below and must be imported using CRM package deployer.

    • Customers, products, and vendors.
    • End-to-end process flows like prospect to cash.
    • On-demand functions like pricing.
    • Reference data for ledger, tax, payment terms, and schedules.

 

Setup for Dual Write linking process

·         In FO environment, go to “Data Management” workspace, click “Dual Write”.


·         Click “New link to Environment”.

 

 

·         Choose the CE environment created above.

·         Select legal entities.




·         Pass the health check (all 15 steps are mandatory).

 


·         Click “Create” to complete the setup process. If any error comes up during creation, those needs to be handled accordingly.

 



·         After successful setup, blank screen will come. To get default OOB entities, click on “Apply Solution”.

 



Enable entity (map) for Dual Write

·         All OOB entities remain in “Not Running” state and needs to be explicitly enabled.

·         “Initial Sync” can be done for previous records, when changing a state of an entity to “Running”.

·         Entity can be stopped or paused as per need.

·         “Entity mapping” can be seen with these options - bidirectional, FO to Dataverse, Dataverse to FO.

·         Corresponding field mappings can be changed, default values can be set against each field.

·         “Activity log” helps us tracking all errors or messages in a single place for each entity.


 


·         New entities can be created by clicking “Add table map”.

·         Environments can be unlinked by clicking “Unlink environment”.

·         Alert settings as per requirements can be configured by clicking “Alert settings”.

·         “Environment details” can be used for adding different legal entities.

·         “Integration key” helps viewing and setting the field mappings for primary keys.

 


 

Wednesday, 5 July 2017

Obtain next open period of a ledger calendar (considering module access)

Dear Friends,

Its been quite a time that I had a chance to post something. Thought of sharing a small code snippet, which helps in obtaining the next open period of a ledger calendar (considering module access as well).  I did this customization related to vendor invoice, which can be used for any other functionalities as well (as standard does it for expense reports and time sheets).

I had some requirement, due to which I was not able to use "findNextPeriod" method of "LedgerCalendars" class; else, that can be ysed, and slight code tunings needs to be done here.


Wednesday, 24 August 2016

Tips and tricks to clear Dynamics AX Rainier Development Introduction examination (MB6-890)

Dear Friends,


Cleared this examination few days back, scoring over 90% (without any dumps). Sharing few tips and areas we can emphasize on for clearing this examination, which might be helpful -


  • For experienced persons (having hands-on experience on Rainier), it will not be that much tough to clear the exam.
  • For experienced persons (but not having hands-on experience on Rainier), it will not be that much tough to clear the exam. But please go through the Visual Studio environment and the related study materials, as this environment is completely new, along with the changes being incorporated.
  • For freshers or profiles having mid-level or less experience, it will not be very tough to clear the examination. But please go through all the study materials being published by Microsoft, and understand them. Only Question/Answer blocks might not help you fully.

Few generic tips and areas to emphasize on - 

  • Go through the study materials being published by Microsoft, and understand them. The questions might not always be direct, so you need to understand the concepts and select the answers.
  • Primary areas which can be emphasized on - 
    • Configure Visual Studio, so that we can work seamlessly on it.
    • Understand "Application Explorer", ways of managing and organizing the same.
    • Create and manage solutions, projects, elements.
    • Create and manage models.
    • Create and manage packages.
    • Understand "Solution Explorer", "Element Designer", "Properties" window along with other commonly used terminologies.
    • Understand the relation between packages, models, projects and elements.
    • Understand Over-layering and Extensions, reference models.
    • Import and export of projects and packages.
    • Options to synchronize database (project specific as well as generic).
    • Options to manage builds and rebuilds (project specific, solution specific as well as model specific).
    • Understand "Dynamics AX 7" menu and the various options.
    • Understand Application Stack, along with the objects lying in the individual layers of the same.
    • Understand Server Architecture, along with the flow.
    • Understand Cloud Architecture, along with the involved components.
    • Create and manage labels, understanding label versions (language specific) and searching labels.
    • Create and manage resource files, types of files which can be associated.
    • Base enums, element values and their saving in SQL.
    • Primitive data types.
    • Extended data types, understanding which properties can be changed (in case of extending an existing EDT) and which properties cannot be changed.
    • Create and manage Tables.
    • Table indexes, different types of indexes and their usages.
    • Table relations, different types of relations ("OnDelete" property).
    • Table inheritance and properties required to implement the same.
    • "InMemory" and "TempDB" tables, along with their usages.
    • Basic level understanding of the table methods.
    • Creating and managing queries, understanding nesting of data sources, dynamic filters.
    • Creating and managing forms, differnet type of form controls, data sources.
    • Understanding form patterns and sub-patterns. 
    • Create and manage different types of menu items.
    • Create and manage menus.
    • Managing and using code editor.
    • X++ language (data types, variable declarations and their usages, statements, loops, basic syntax).
    • Runnable classes and its usage.
    • Classes and objects
    • Class inheritance.
    • Different type of class methods and their executions.
    • Key properties for all the elements.
    • Base practices and advantages for all elements.
    • Basic understanding of debugger and its execution.
    • Basic understanding of comparison tools.
    • TTS blocks.
    • Data manipulation (read, insert, update, delete).
    • Exception handling (Try, Catch, Retry, Finalize).
    • Security architecture - roles, duties, privileges, process cycles, permissions, security properties on key elements.
    • Basic understanding of BI.
    • Basic understanding of OData.
    • Basic understanding of Reporting Services.

All the Best for the examination.

Tuesday, 22 March 2016

Tips to use temporary tables in outbound AIF document service

Dear Friends,

When we talk about AIF outbounds, normally what comes first to our mind is using a query, and using the wizard to generate the required objects. But at times, we may face a situation, where standard table joins might not provide the desired data in the query.

To achieve this, we may need to write a code and take use of a temporary table, and mapping that with the query. But as we all know, regular tables are not suggested in these scenarios, and we face problems with scope of the temporary tables in these scenarios.

To achieve that successfully, we need to override the "prepareForQuery" method of the AxD class, and do a "setCursor" of the existing "QueryRun" object with the temporary table (which needs to be populated before that).

This will help us in achieving the desired result.

Monday, 29 February 2016

Tips to resolve issues of adding new data sources in list pages

Dear Friends,

As we all know, to include new fields in a list page, we need to work in the queries (at times adding a new data source, specifying the proper joins and relations) and also may need to work in the interaction class.

At times, doing this also, we do not get the newly added data source in the existing list page's data sources (after doing a "Restore" in the form as well); although for new forms, it gets properly displayed.

To overcome this, we need to do the following thing - 

  • Right click on the data sources in the form.
  • Re-select the query once again, and save the form.
Once it is done, the data source will get properly refreshed, and only then the design level changes can be achieved.



Tuesday, 23 February 2016

Tips of using LCS and Visual Studio Online for code upgrade functionality in Rainier

Dear Friends, 

We all are very much excited about Rainier, and quite a few of us have already started working on AX 7.0 (Rainier) technical previews (CTPs). In earlier versions of AX, using Life Cycle Services (LCS) was not a mandate, but now with Rainier, it seems to be a mandatory thing. Thought of sharing few important tips and steps related to integration of Rainier with LCS, for upgrading of codes from AX 2012 - 

  • As of now, to connect LCS for obtaining the functionalities related to Rainier, one need to have an account on "OnMicrosoft" Azure domain account.
  • Project needs to be created in LCS.
  • VSO (Visual Studio Online) and LCS needs to be synchronized along with the project and get connected.
  • LCS does have a "Code Upgrade" tool, where the model store needs to be uploaded. 
  • It analyses, upgrades and creates Visual Studio project solutions (normally 2 solutions gets created, one for upgraded objects, and another one for upgrade conflict objects). 
  • Each solution will have model and layer specific projects.
  • As of now, LCS code upgrade facility is available only for AX 2012 codes.
  • Developers need to analyze and fix the issues, so as to obtain an error free build.
  • BP deviations also needs to be analyzed and needs to be addressed, depending upon the criticality and feasibility of the same.



Monday, 22 February 2016

Common issues and solutions while importing ISV license file

Dear Friends,

When we think about preparing an ISV solution, Microsoft Dynamics AX 2012 allows ISVs to create encrypted license files using x509 certificates, to protect their intellectual property. When customers deploy ISV modules to their environment, they are required to import the license file to enable the module. During the license import process, the certificate that is used to sign the file is checked against the root certification authority to verify its validity. In certain cases, however, the root authority may not be available in the system and thus requires an internet connection to check the validity through CA (Certificate Authority). The process steps are
  • Perform the standard installation.
  • Import the certificate (this needs to be imported under “Trusted Root Certification Authorities”).
  • Import the model or model store (certificate needs to be imported prior to this, as this will change the signature of model to “Yes”).
  • Import the license file (the license file needs to be generated by the ISV partner, seeking the required details from the customer or partner, where ISV will be deployed; and providing the certificate related inputs).
  • Synchronize the database.
  • Compile and full CIL of the application.


But at times, in spite of importing the certificate and the model/model store; we get stuck while importing the license file. To achieve this, the following steps needs to be followed –

  • Launch MMC.exe.
  • Go to File > Add/Remove Snap In.
  • Go to Certificates.
  • Click “Add”.
  • Select “Computer Account”.
  • Click “Next” and “Finish”.
  • Click Local Computer > Trusted Root Certification Authorities > Certificates > Import.
  • Follow the wizard to import the certificate.
  • Try importing the license file.