Galleries

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 .

D365 FO & MS Forms Pro Survey Integration : Send & Save Survey Responses using Microsoft Power Automate/Microsoft Flow/Azure Logic Apps

  • Objective – Microsoft Dynamics 365 (Finance & operations) & Forms Pro Survey Integration : Send and Save Survey Responses using Microsoft Power Automate/Microsoft Flow/Azure Logic Apps.
  • Scenario – Organisation wants to send Employee Satisfaction Survey to their employees via email. Employee will complete the survey . Survey Responses should be store and save in Microsoft Dynamics 365 Finance & operations.
  • Technologies/Products – Microsoft Form Pro(Free 30 Days Trial), Microsoft Dynamics 365 Finance & operations, Microsoft Power Automate(Microsoft Flow/Azure Logic Apps).
  • Prerequisite – Before moving ahead individual must go and see my old post on Microsoft Forms i.e. Microsoft Forms : Create a Survey Form From Scratch. Individual should have knowledge of Microsoft Power Automate(Microsoft Flow/Azure Logic Apps) & Dynamics 365 Finance & operations development.
  • Send Survey – Login to Microsoft Power Automate/Microsoft Flow/Azure Logic Apps. Create a Microsoft Flow for sending Employee Surveys to the employees of the company . In this scenario i am using a custom data entity of Employee master which is returning fields – Employee Code & Employee Email, Employee. You can use your own data entity as per your requirement and business need. I am reading all the Employee records and sending surveys in their email. You can add more conditions as per your business need. For demonstration purpose i am keeping things simple.Please refer below flow for your reference.
  • Storing and saving Survey responses – Create a Microsoft Flow for Storing and saving Survey responses in Microsoft Dynamics 365 Finance and operations using D365 FO custom data entity and Microsoft Flow Fins and ops connectors.Please refer below flow for your reference.

Cheers, piyush adhikari +91-7995802472 & piyushadh@gmail.com

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: Edit Method In Table Extension Of Standard or Base Table or Custom Table

In past, i explained D365/AX7:Display Method In Table Extension Of Standard or Base Table. Display method value cannot be edited but in Edit Method users can edit the value.

Sample Code

Add the below method in extension class of table and use the same in Form Control .

edit int largeDescriptionEdit(boolean _set, Description _largeDescription)
{
	AcxBankAccountTable acxBankAccountTable;
	int  ret;

	acxBankAccountTable = AcxBankAccountTable::find(this.Name, _set);

	if (_set)
	{
		ttsbegin;

		acxBankAccountTable.LargeDescription = _largeDescription;
		acxBankAccountTable.update();

		ttscommit;
	}
	else
	{
		ret = acxBankAccountTable.LargeDescription;
	}

	return ret;
}