Category Archives: D365 Finance and Operations
Form and Table Customization in Dynamics 365 For Finance and Operations
Introduction: Customization of any particular form or table is done by creating extensions. Any modifications or to add some fields to an original object can be done by creating extensions. At run time all these extensions run as single object. In this blog we demonstrate how to add fields to an existing form. Consider the form CustTable and add two fields in the form. Passport Number Age Step 1: From Application explorer open DirPerson Table –> right click and click on create extension Step 2: Open the table designer and expand the fields. Add the two fields and set the appropriate properties. Step 3: From Application explorer open CustTable Form –>right click and click on create extension Step 4: Open the form designer of CustTable. Expand the deign portion until you reach the control, where you want to add required field. for example I want to add New fields in Person Detail section. Step 5: Open the data sourceà go to fields and drag and drop the newly created field. Save the changes and build the project. Step 6: This adds the fields to the form.
Share Story :
Set SSRS Report Parameter to allow null values in D365 Operations
Introduction: Reports are used to see summary of data. We also set parameter to filter data but at times we don’t want to filter using a parameter and keep it as blank. By default, parameter values are always mandatory in D365 Finance and Operations, Enterprise Edition. In this blog article, we will see how we set property to allow null values to a parameter in SSRS Report. Steps: Go to Report -> Parameters. Select the Parameter which you don’t want to be mandatory. Go to Properties -> Nullable. Set the value to True. This will allow you to pass null value. This is how you can make the report parameter as optional.
Share Story :
Creating a New Module in Dynamics 365 for Finance and Operation
Introduction: In Dynamics 365 New Modules are created using Menu. This is Customization in Dynamics 365 for Finance and Operations. Steps: Following are the Steps of Implementation: Step 1: Create a Menu Item Add a new Item to your Project . Under Dynamics 365 Items go to User Interface. Select Display Menu Item and give appropriate name to it. Now open the Designer and Set the Properties of the Menu Item. Set the label Name for the Menu Item, Specify the Object to Run under Object. Refer this Menu Item under the Properties of Menu. Step 2: Create a Menu Add a new Item to your Project Under Dynamics 365 Items go to User Interface Select Menu and give appropriate name to it. Now open the Designer and Set the Properties of the Menu. Set the Label Name for the Menu under Appearance and Menu Item name under Data. Step 3: Link the Menu Item under Menu Open the Menu Drag and drop the Display Menu Item from the Solution Explorer to the Menu. Step 4: Display the New Module Open the AOT and expand the Main Menu. Right click and click on Create Extension. You will be able to see the MainMenu.Extension in your solution Explorer. Rename it and open in Designer. Right click on the MainMenu.Extension and add new Menu Reference. Rename the Reference Menu and set its Properties. Set the Menu Name to the Menu Created in Step 2 Compile your Project You can see your Module in the Main Menu.
Share Story :
Error ‘An error occurred during report data sets execution’ in D365 Operations
Introduction: In this blog article, we will see how to resolve timeout error in D365 Operations. Refer below screenshot for error. This error occurs when a report is processing many records and takes too long to execute. A report processing times out in 10 minutes. Steps: To resolve the error, follow below steps, Go to Tmp Table and change its Table Type property to TempDB. Go to RDP class and extend the class from SrsReportDataProviderPreProcessTempDB Save, Build and Deploy the Report.
Share Story :
OData API – Exposing Data Entities in D3FOE (Part 1)
Introduction: In this blog article, we will see how we can expose standard and custom data entities using OData Client code generator to OData API for CRUD operations. Steps: Install OData Client Code Generator v4 Create new Project Execute the OData Client code. 1. Install OData Client Code Generator v4: Open Visual Studio. Go to Tools -> Extensions and Updates Go to Online Fast Tab -> Visual Studio Gallery -> Type ‘OData V4 Client Code Generator’ Click Download. In the VSIX Installer dialog box, Click Install. After Installation, it will ask you to restart the Visual Studio. Click Restart now. 2. Create new Project: Click on new Project. Go to Visual C# -> Windows -> Select Console ApplicationNote: Client Code Generator can work with any project. Enter details and click OK. 3. Execute the OData Client code: In Solution Explorer, right click the solution. Go to Add -> New Item. Select OData Client. Click Add. You will see 2 files added in the solution. Open the file with .tt extension (Text Template). In the file, update the Metadata URI. Save and execute the .tt file. You can see a .cs file generated under the .tt file. Conclusion: This will generate a code that exposes all the Data Entities of D365 Operations. You can use this generated code for CRUD operations. In the next part, we will see how to use this generated code to read and write data in tables using exposed data entities.
Share Story :
Create Job -Human Resource Management (Dynamics 365 Finance & Operation Enterprise)
For the modern-day organisations that have global scalability and digital intelligence, dynamics 365 for finance and operations is definitely the need of the hour. Make more precise interest estimates to improve your items’ accessibility and limit your stock expenses. The apparatus utilizes Microsoft SQL Server determining calculations, Microsoft Excel perceptions, and Dynamics 365 for Finance and Operations models—for conjectures you can rely on. Get perceivability across associated circulation, client assistance, deals, and promoting frameworks so you can develop your items and procedures to meet rising desires. Get continuous data on practically any gadget, whenever. Elements 365 for Finance and Operations improves and quickens business process changes. What’s more, it’s situated in the cloud, so it coordinates with inheritance frameworks and scales universally effortlessly Introduction: Job is collectivity of tasks and responsibilities which are required of worker who perform a job. Pre-requisites: Before setup jobs, need to create below elements: • Job Title • Job Function • Job types • Compensation level • Survey company • Skills and skills level • Certificate type • Test type • Education • Screening type • Job tasks • Areas of responsibilities Steps: Below are steps to create department- Click Human resources > Jobs > Jobs. Click New In the Job field, enter a name for the job. In the Description field, type a brief description of the job. In the Title field, select a title for the job. In the Maximum number of positions field, indicate the number of positions that are allowed for the job: Maximum positions – Select this option and enter the maximum number of positions that are allowed for the job. Unlimited – Select this option to indicate that an unlimited number of positions are allowed for the job. In the Full-time equivalent field, enter an employment factor from 0 to 1. The value 1 indicates a full-time job. For part-time employment, enter a number between 0 and 1. For example, enter .5 for a half-time job. In Description Fast tab, enter detail description of the job. Click on the Job classification fast tab In the Job type field, select a job type to associate with the job. In the Function field, select a job function. Click on Compensation fast tab. In the Level field, select a wage level for the job. In the Survey company field, select the survey company that is responsible for the survey that was applied to establish the market-based pay range for this job. In the Reference job field, enter the job code that the survey company uses for this job. In Market Price Range information, specify market based pay range in source field. In Low threshold, control threshold and high threshold, specify minium, basic and maximum amount that paid to worker who assigned for this job. On Skills fast tab, enter skills required for the job. In level field select skills level and in importance field, select importance level (From1 to 6) On the Certificates fast tab, optionally enter certification requirements for the job and importance of the certificate On the Tests FastTab, enter tests for workers are required to pass for the job. On the Education FastTabs, optionally enter educational requirements for the job and the importance of the education. On the Screenings FastTab, optionally enter any screening that workers are required to pass for the job. On the Job tasks FastTab, optionally enter job tasks to the job template. On the Areas of responsibility FastTab, optionally enter areas a worker is responsible for in jobs. Conclusion: By attaching job to position you can assign position to worker and it will help to maintain and track Job tasks, responsibilties, Skills, education, certifications, tests.
Share Story :
Invoking Web Service/Rest API from D365 FOE
In this blog article, we will see how we can invoke web service call for a third-party application in Dynamics 365 for Finance and Operations, Enterprise Edition using X++. In this blog we will Consider Service Order Entity as source passing Service Order values to a third party application on Service Order creation using web service endpoint url. Create a SMAServiceOrderTable Table post Insert event. /// <summary> /// Post insert passing Service Order values and URL to invoke Web service /// </summary> /// <param name=”sender”></param> /// <param name=”e”></param> [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Inserted)] public static void SMAServiceOrderTable_onInserted(Common sender, DataEventArgs e) { SMAServiceOrderTable serviceOrderTable; serviceOrdertable = sender as SMAServiceOrderTable; String15 SOstatus = enum2Str(serviceOrderTable.Progress); //parmvalue stores Service Order values in container container parmvalue = [“‘CustAccount’:'”+serviceOrderTable.CustAccount+”‘”,”‘ServiceOrderId’:'”+serviceOrderTable.ServiceOrderId+”‘”,”‘CurrencyCode’:’US Dollar'”,”‘SOStatus’:'”+SOstatus+”‘”,”‘ProjId’:'”+serviceOrderTable.ProjId+”‘”,”‘CFSCRMWorkOrderNo’:'”+serviceOrderTable.CFSCRMWorkOrderNo+”‘”]; new WebService().sendrecord(“<<webservice url>>”,parmvalue); } Create a class which calls the web service. Class WebService { public void sendrecord(String255 endpointurl,container arryI) { str url; str postData; str returnValue; System.Net.HttpWebRequest request; System.Net.HttpWebResponse response; System.Byte[] byteArray; System.IO.Stream dataStream; System.IO.StreamReader streamReader; System.Net.ServicePoint servicePoint; System.Net.ServicePointManager servicePointManager; CLRObject clrObj; System.Text.Encoding utf8; Counter countCounter; ; //generate postdata in json format postData = “{“; for(countCounter= 1;countCounter<= conlen(arryI);countCounter++) { postData = postData+conpeek(arryI,countCounter)+”,”; info(strFmt(“%1″,postData)); } postData = postData+”}”; new InteropPermission(InteropKind::ClrInterop).assert(); url = endpointurl; clrObj = System.Net.WebRequest::Create(url); System.Net.ServicePointManager::set_Expect100Continue(false); request = clrObj; request.set_Method(“POST”); utf8 = System.Text.Encoding::get_UTF8(); byteArray = utf8.GetBytes(postData); request.set_ContentType(“application/json”); request.set_ContentLength(byteArray.get_Length()); dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.get_Length()); dataStream.Close(); } } Let me know your reviews. I will soon come up with more articles, as I further explore D365 Operations.
Share Story :
Physical Negative Inventory Dynamics 365 for Operations
Physical negative inventory functionality is mainly used for issuing the stock for insufficient inventory. If Physical inventory checkbox is selected then system will allow to issue an item though stock is not available into inventory. Path: Inventory Management > Setup > Inventory > Item Model Group Below is example how to issues stock if there is insufficient inventory. You can see the below item for which On Hand inventory is not available though I want sale these stock. Create the sales order and enter item, quantity, Unit cost and confirm the sales order. Post the Packing slip to sell or issue the stock. Check the On hand inventory after posting Packing slip. You can check On Hand Quantity is showing negative. Conclusion: These functionality helps to issue stock through sales order, Production order, adjustment journal though stock is not available or insufficient.
Share Story :
Form Personalization in D365 Operations
In AX 2012, we had an option Personalize to view the form and form control layout; Form, DataSource and field details; Add and manage form design. In this blog article, we will see how we can find form and form control details in Dynamics 365 for Operations. In this blog we will view the Customer Name – form control details. 1. Go to Accounts Receivable -> All customers -> Right click on the ‘Name’ field. 2. Select Form Information -> Form Name 3. In Form Information go to Administration Fast Tab. You can find all details regarding form control – Customer name.
Share Story :
Override Form DataSource method using Extensions in D3fO
In this blog article, we will see how we can override Form Data source method using Extensions in Dynamics 365 Operations. Now as recommended by Microsoft we must avoid Overlayering and instead use Extension. For extension, we have to use pre or post event handlers methods. In this blog we will create event handler of OnActivated() method of SalesLine DataSource of form SalesTable. Create a new Class: class CFSActivateButton { } Copy and paste OnActivated() event handler of SalesTable DataSource in Class: /// <summary> /// To activate or deactivate Create Service Order button based on CFSProjId field of SalesLine /// </summary> /// <param name=”sender”></param> /// <param name=”e”></param> [FormDataSourceEventHandler(formDataSourceStr(SalesTable, SalesLine), FormDataSourceEventType::Activated)] public static void SalesLine_OnActivated(FormDataSource sender, FormDataSourceEventArgs e) { FormDataSource fds = sender.formRun().dataSource(“SalesLine”); SalesLine salesline = fds.cursor(); FormRun fr = sender.formRun(); FormControl fc = fr.design(0).controlName(“CreateServiceOrder”); if(salesLine.ProjID) { fc.enabled(true); } else { fc.enabled(false); } }
