Category Archives: Tips & Tricks

D365 FO/AX7: Merge Branches Or Moving Changes from One Branch To Another in VSTS/Azure DevOps

Requirement: In last post i demonstrated how can we create A New Production Branch In VSTS (Visual Studio Team Services)/Azure DevOps & Microsoft Dynamics 365 finance and operations. To See my last post please click here. In this post i will show how can we Merge Branches in VSTS/Azure DevOps and Microsoft Dynamics D365 finance and operations or how can we move change or CHANGESets from one dev branch to another prod branch. Before starting this tutorial i will recommend you to please go through my last post.To See my last post please click here

  • Right Click on SOURCE Branch & choose option MERGE
  • Browse TARGET Branch
  • You can choose 2 option for branch changes you would like to merge.First one is “ALL CHANGES UPTO SPECIFIC VERSION” & second one is “SELCTED CHANGESETS
  • Click NEXT and FINISH

D365 FO/AX7: Create A New Prod Branch In VSTS/Azure DevOps

Introduction : In Microsoft Dynamics 365 & VSTS/Azue DevOps practice, it is always recommended to use a separate branch for production deployment else incomplete code of developer will get included in production deployment package.Developers checkedIn code or any development changes frequently in one dev branch but package should not be created from that branch in which developer is doing checkIn. Only required changes should be merged from dev branch to prod branch in Microsoft Dynamics 365 finance and operation & VSTS/Azue DevOps. Please click here to read my post – D365 FO/AX7: Merge Branches Or Moving Changes from One Branch To Another in VSTS/Azure DevOps

Requirement : Create A New Production Branch In VSTS (Visual Studio Team Services)/Azure DevOps & Microsoft Dynamics 365 finance and operations.

Once Branch of production will be created you can merge code from DEV branch to PROD branch as per requirement.In next tutorial i will show you how can we merge code from one branch to another.

  • Login to your Microsoft Dynamics 365 finance and operations development server.
  • Open visual studio in Microsoft Dynamics 365 finance and operations development server using run as administrator.
  • Click on VIEW tab and open TEAM EXPLORER in Visual studio of D365 fo development server.
  • Open SOURCE CONTROL EXPLORER
  • Create a NEW BRANCH.

D365 FO/AX7: Mobile App & Mobile Workspaces With Example

Introduction – The Microsoft Dynamics 365 mobile app allows you to access your business processes, data and records from mobile phones and tablets. Microsoft Dynamics D365 Mobile workspaces can be enabled in a very less time with almost no effort. Using Microsoft Dynamics D365 fins and operations mobile user can easily perform below activities :

1. User can view Microsoft Dynamics D365 finance and operations business data in mobile app.

2. User can edit or delete Microsoft Dynamics D365 finance and operations business data in mobile app.

3. Admin can add certain tasks and CRUD operations in D365 workspace and mobile app. User can perform those operations in D365 mobile app.

Example – Below are the steps to create your first Microsoft Dynamics D365 mobile app.

  1. In this scenario we are using vendor master and we will public vendor master workspace and user will be able to view vendor master in D365 mobile app.
  1. Go to settings menu and click on mobile app in Microsoft Dynamics 365.
  1. Create new Microsoft Dynamics 365 mobile app.
  1. Fill all the details of Microsoft Dynamics 365 mobile app.
  1. Add page in Microsoft Dynamics 365 mobile app.
  1. Select fields
  1. Save the Microsoft Dynamics 365 mobile app.
  2. Publish the Microsoft Dynamics 365 workspace and mobile app.
  3. Login into your Microsoft Dynamics 365 mobile app and start using it

D365 FO/AX7: Multithreading With Example Using Pessimistic LOCK & BatchHeader/BatchTask Class

Background – In Microsoft Dynamics D365 Finance and Operations, most of the processes & batch jobs run in a single thread and supports only single thread execution not multi-threading. Generally Single Thread batch Jobs or processes work well in Microsoft Dynamics 365 Fins and ops. But there are many scenarios where we require fast performance and quick competition of processes and batch jobs. Multithreading Batch Jobs approach is very useful in those scenarios.

Two Different Ways In Microsoft Dynamics D365 Finance and Operations,We can develop Multithreaded Batch Jobs in two ways. The first approach is using PESSIMISTIC LOCKS OR PESSIMISTIC SELECT in Microsoft Dynamics D365 Finance and Operations.

The second is to create BATCH TASKs. Batch Task approach you can find in standard classes like RetailStatementCalculate_Multi, RetailStatementPost_Multi Etc. which are using RunBaseBatch Framework (Not SYSOperation Framework) inside Microsoft Dynamics D365 Finance and Operations.

Lets begin with first approach i.e. using PESSIMISTIC LOCKS OR PESSIMISTIC SELECT in Microsoft Dynamics D365 Finance and Operations.By default, D365 fins and ops supports Optimistic Concurrency model (OCC) during the time SELECT or fetching records from database of Microsoft Dynamics D365 Finance and Operations. Optimistic Concurrency Model or SELECT only locks records during the time of Update whereas Pessimistic Concurrency Control (PCC).

Below code you can utilize in batch jobs and you run multiple thread of same batch job class as we a

Lets move to second approach , which include create and adding RUNTIME task using BATCHHEADER class . Here a single Runbase Batch Job is used for creating multiple threads or Runtime Tasks.

D365 Fins & Ops/AX7: Extend & Customize Retail Statement Posting|Part 1|D365 Commerce|D365 Retail

Retail Statement Posting– Retail Statement Posting or Day End Posting in Microsoft Dynamics 365 finance and operations/D365 Commerce/D365 Retail is very important process. In Dynamics 365 Commerce, Retail statement posting process is a batch task which updates financial Transaction, customer transactions & inventory transactions. Retail statement posting process consists automation of activities like creation of sales order from D365 MPOS/CPOS retail sales transactions, invoice posting of sales order , retail tender payments & customer settlements.

Scenarios– Extension & Customization of Retail posting routine is a common requirement and classes architecture & posting routines is way more different than Microsoft Ax 2012 retail statement posting and totally new.

Example 1 :

During the time of retail statement posting, developer wants to carry custom fields in SalesLine or wants to update value of fields in SalesLine.During Retail statement posting , RetailTransactionServiceOrder Class is resposible for creation of SalesTable or Customer Order. Fortunately, Microsoft provides a class RetailCreateCustomerOrderExtensions for extending Retail Statement posting – Customer Order Creation Process. You can extend the class RetailCreateCustomerOrderExtensions and by using Chain of command (COC) of method RetailCreateCustomerOrderExtensions.preSalesLineCreate() you can achieve mentioned scenario.

Example 2:

In example 1 we are modifying the value of SalesLine. In this example , developer wants to update or carry new fields in SalesTable or customer Order Header during Retail Statement Posting.You can extend the class RetailCreateCustomerOrderExtensions and by using Chain of command (COC) of method RetailCreateCustomerOrderExtensions.orderHeaderBeforeInsert() you can achieve mentioned scenario.

D365 FO/AX7: The natural key for the table XXXX was not found [Solved] Data Entity Error

  • Issue – During the creation of data entity of table VendInvoiceTrans in Microsoft Dynamics 365 Finance and operation, system is throwing error- The natural key for the table VendInvoiceTrans was not found.
  • Root Cause The reason is that the table VendInvoiceTrans is using  RecId as its primary index. D365 Fo Data Entity Wizard doesn’t support tables with a RecId as a primary index.
  • Steps to Solve
  • Duplicate any existing data entity in your D365 fins and ops project and model. In my case i am making a duplicate copy of existing data entity – EMPSurveyTableEntity
  • Rename the duplicate copy of data entity
  • Change the existing datasource of data entity from EMPSurveyTable to VendInvoiceTrans
  • Delete existing fields of data entity and add new field from datasource vendInvoiceTrans
  • Remove the field from KEYS –> ENTITY KEY and new fields as per your need from datasource VendInvoiceTrans. ENTITY KEY fields should not allow duplicate and should be unique combination.
  • Change the Data entity properties PUBLIC COLLECTION NAME , PUBLIC ENTITY NAME & DATA MANAGEMENT STAGING TABLE to new values.
  • Right click on data entity and regenerate Staging Table Again
  • Assign data entity to security privilege.
  • Rebuild and synchronize the project .

Microsoft Forms : Create a Survey Form From Scratch

Introduction

Microsoft Forms is online application & surveys creator tool which helps you to create surveys, quizzes & polls. Microsoft Forms also comes with Microsoft Forms Pro version with many more integration capabilities and features as comparison to basic version.With Microsoft Forms Pro, you can create and send surveys and receive survey responses in Dynamics 365 Applications along with other Dynamics 365 data. Microsoft Forms can be easily integrated and used with applications like Microsoft Flow, Microsoft Power Automate & Microsoft Azure Logic Apps.

Steps To Create a Survey From Scratch

  • Under My Forms, click on New Pro Survey
  • Input your survey title and its description.
  • Add new rating question.
  • Fill question and its description
  • In the end, your Microsoft Forms Preview Should look like this.
  • Click on Send to see sharing options
  • You can send Microsoft Forms via email or you can configure it in Microsoft Flow / Azure Power Automate or You can share Microsoft Forms Link or QR Code. There are so many options

D365 FO/AX7: Cross-company & Change-company for accessing Data for Multiple Companies Using X++

Introduction

In Microsoft Dynamics AX/D365 Finance and operation, users can setup multiple legal entities. By default in Microsoft Dynamics AX/D365 FO, all tables store data per company unless SaveDataPerCompany  property is not changed to NO. By dafault value of property SaveDataPerCompany  = Yes.Using crosscompany & changecompany keyword, you can construct a query to retrieve all records, regardless of the company you are currently logged into.You can fetch the all the company records using keyword -crosscompany and function – changecompany.

Change-Company

static void main()
{
  CustTable custTable;
  changeCompany('INMF') 
  {
    custTable = null;
    while select custTable
    {
       //custTable of company 'INMF'.
    }
  }
}

Cross-Company

static void main()
{
  CustTable custTable;
  while select crosscompany custTable
  {
      custTable of all the companies
  }
}

D365/AX7: Uninstall/Remove a Model/Package From Production & UAT Environment

Requirement

Uninstall/Remove a Model/Package From Production & UAT Environment of Microsoft Dynamics Finance and operations.

Steps

  1. Create a file that is named ModuleToRemove.txt.
  2. In the file, put the name of each module that you want to remove on a separate line. Make sure that you’ve completed the prerequisites for each module that you’re removing.
  3. Create a valid deployable package, and put the ModuleToRemove.txt file in the package\AOSService\Scripts folder.
  4. Install/Deploy the deployable package in UAT or production environment.
  5. Verify that the package was uninstalled before you complete this procedure in a production environment.