Archive for Mart 15th, 2020

What is Dynamics 365 Finance and Operations Optimization Advisor?

In this article, I will explain what Dynamics 365 Finance and Operations Optimization Advisor is and what it does. Optimization Advisor is a tool that allows business analysts and consultants to identify problems in module configuration and business data. Optimization Advisor recommends best practices for module configuration, and identifies outdated or incorrect setup and business data, and provides information to take action.

Open the workspace by using Modules > System administration > Workspaces > Optimization Advisor.


My application is a dev environment with demo data, so many suggestions are listed. As I am a software developer, the suggestion that immediately caught my eye was the performance-related one. It is for using batch to improve posting performance. I click More Information.


Here, there are details of the finding. If you decide to do it, click Take action.


It opens the general ledger parameters form for you. From the Batch transfer rules tab, I select Scheduled batch for Transfer mode. Thus, I took action on an item of Optimization Advisor.


In this article, I tried to explain what Optimization Advisor is and how to use it. It’s a nice feature, but the recommendations here should be tested first in test environment. Each parameter has different effects on the system. Some settings may be deliberately different in the project design. You shouldn’t change it just because you saw it here and considered it correct.


TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Optimization Advisor, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

X++ :14- ValidateWrite Metodu Ne İşe Yarar?

Bu yazıda Dynamics 365 Finance and Operations tablo metotlarından validateWrite() metodunu anlatacağım. validateWrite () bir kaydın DB’ye Insert veya Update işlemelerinden önce çalışan doğrulamaların yapıldığı metottur. Bir örnek yapalım.

FDBookTable tablosunda metotlara sağ tıklayıp validateWrite () metodunu Override ettim.


Şöyle bir kontrol yazalım. Eğer BookCount == 0 ise hata versin. Bunun için checkFailed() kullanılır. Otomatik olarak info verip hata döndüren bir koddur.


Kaydedip tablo tarayıcısını açalım. Sıfır girip kaydetmeye çalıştığımızda hata mesajını alırız.


boolean validateWrite()



boolean                     ret;

DirPartyType                type;

ret = super();

// Warn user if this customer lacks a tax exempt number, but do not fail to save the revision.

if (!this.OneTimeCustomer && TaxVATNumTable::isVATNumMandatory(CustParameters::find().MandatoryVATNum, this))




if (ret)


if (PaymTerm::isCashAccount(this.PaymTermId) && this.PaymSched)


ret = checkFailed(“@SYS25074″);



// Add check MandatoryTaxGroup is set on CustParameters.

if (ret && CustParameters::find().MandatoryTaxGroup && !this.TaxGroup)


ret = checkFailed(“@SYS113299″);


if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoMX]))


taxRegistrationValidator = TaxRegistrationValidator_MX::construct(this);

ret = taxRegistrationValidator.validateCustomerTaxRegistration() && ret;


if (this.MainContactWorker)


ret = ret && smmUtility::isValidWorkerInCurrentCompany(this.MainContactWorker);


if (ret && !CustVendTable::validateContactForParty(true, this.ContactPersonId, this.Party))


ret = checkFailed(“@SCM:InvalidPrimaryContactErrorMessage”);


return ret;


CustTable ValidateWrite() metodunu inceleyelim. checkFailed kullanımını görebilirsiniz. Eğer birkaç satırdan uzun bir kod gerekiyorsa ayrı metot yazıp buradan onu çağırmak genel yaklaşımdır.


TAGs: X++,validateWrite, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Dynamics 365 Finance and Operations Data Management 1. How to Import Data?

In this article, I will introduce Dynamics 365 Finance and Operations data management infrastructure (Data Management Framework). The scope of data management is very large. I will try to talk about the basic principles in this series. Data is very important for every application, but the reason for the existence of ERP is to collect the data correctly and to create meaningful reports from the collected data. For this reason, the product has always had powerful tools for data management. With the cloud, these are now very advanced. Many different technologies such as CDS and Azure DataLake were involved. Of course, SQL and table structure remains, but with the added Data entities structure, we have a much more flexible and easily managed structure. In this section, I will try to explain how to manage Data Entity and Entity Packeges using the data management infrastructure.

The data management infrastructure consists of the following objects.

  • Data entities – They are meaningful data sets. It is a structure that consists of one or more data sources to view and process a certain data. Data Entity allows us to bring these data sources together and perform transactions over a meaningful data set. It is suitable for reuse. It is used for integration, data transfer and many other purposes.
  • Data project – A project record that holds edited Data Entity and relationships. It can be reused.
  • Data job – Includes run Data Projects, uploaded files and recurring processes.
  • Job history – Keeps the history of transactions.
  • Data package – It is a compressed structure with Data project manifest and Data files. It is created over the data job. It allows importing and exporting multiple files in one operation.

You can use this structure for three different scenarios:

  • Data migration
  • Set up and copy configurations
  • Integration

Let’s get to the topic of this article. We’ll start with a very simple data transfer. We will transfer the vendor group. (VendGroup). Log in to Dynamics 365 Finance and Operations and open Workspaces > Data management worksheet.


Click Framework parameters Tile. Tile’ı nasıl çevirmek lazım emin olamadım. En iyi uygunu tuğla veya fayans gibi duruyor ama ben karo diyeceğim. J  You can make many settings from the screen that opens. Now just select the View defaults section as Enhanced view.


This is now the advanced view. You can return to the old view by selecting Standard view.


Click on the Import tile.


Enter the basic information and click Add File.


By the way, the data I will transfer is a csv as shown below.


From the window that opens, I first select the Entity I want to transfer from. I determine the format. I select my file by clicking Upload and add.


I click Yes.


Here it says some relationships are missing between my file and the Entity. I can do it here if I want. I lick No for now.


Transfer failed due to lack of relationships. However, the project was created. I click the icon under view map.


It shows the links between my file and the Entity. Since the headings in my file are tags, it could not auto-match. I can do it manually from here.


I have completed my mappings and I save.


I go to my project and click Import.


It adds the transfer to the working list.


It quickly completed the transfer because my data was too little.


Now I can open the VendGroup form and see the records I imported.


In this article, I made an introduction to data management and performed a very simple data transfer. I will talk about very different uses of this structure in my following articles. Both consultants and software developers need to know the capabilities of this very well. There are many different uses. It is a structure that will save you a lot of time with proper use.


TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Data Management Framework, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 Insights Power BI, Power Automate, Power Apps, Power Virtual Agents, what is Dynamics 365, Dynamics 365 ERP, Dynamics 365 CRM