Following the articles and videos in these tutorials will take you from a beginner to a master in D365 x++ development. This will show you the recommended learning order. Many of the articles I have written are tutorials teaching people how to create functionality within Microsoft Dynamics 365 Finance and Supply Chain. I have been asked by learners where they should start. In what order should you read/watch these articles and videos? While each article I write focuses on a specific learning objective, some tasks require you to have some previous knowledge. This list is my attempt to order and group these articles up.
Getting Started Developing In D365
If you already have an environment set up for you, or you only want to read about D365 X++ Development, then skip this section. These articles will show you how to create or deploy a D365 development environment.
After deploying an environment, there are some steps required to set up Visual Studio so that you can begin writing some code.
Create Or Deploy An Environment
Set Up Visual Studio
- How To Run Visual Studio As An Administrator
- Organize Projects By Element Type In Visual Studio For D365
- How To Create A Model In D365
- How To Update References Packages In D365
- How To Create A D365 Project In Visual Studio
Development
Note, that there is no single right place to start learning D365 X++ Development. Hopefully, this table of contents will help you continue learning the areas that interest you. That said, I like to start with creating tables, then forms, followed by teaching X++ code after that.
Tables
Basic Form
Not surprisingly, forms are used to enter data and show it in D365 X++ Development. Importantly, it is the primary way the user interface is designed.
Menu and Menu Items
Next, you need to extend a Menu and add a Menu Item to that Menu, in order to open a form, run a batch job, or display a report. Menu Items are the links you see.
After adding a Menu Item, you need to set up security to enable users to see that new menu item. But we will cover that a little later.
Advanced Form Development
Execute Query
Form Patterns
Send Data To A Form
Call A Form From Another Form
Form Lookups
Display Method
Edit Method
JumpRef
Number Sequence
Functional Form Usage
Security
Runnable Class (Job)
Select Statements
In D365 X++ Development, select statements are the way data is retrieved from the database. It is similar to the TSQL coding language. However, the syntax is a little bit different.
Awesomely, it has some great advantages. Select statements can retrieve data and load it into an x++ class-like object called a ‘table buffer’. Additionally, developers can write ‘while select’ statements that make looping through records very easy.
- How To Write An X++ Select Statement
- How To Write A While Select Statement
- D365 Joins in x++
- D365 Outer Join in x++
- How To Write A D365 Find Method
Insert and Update Data
- How To Insert Data In D365
- How To Update Data In D365
- How To Use Insert_recordset in D365
- How To Use InsertDatabase in D365
- D365 TTSBegin and TTSCommit
Error Handling
Debugging
After performing D365 X++ development, it is important to know how to debug the code. Specifically, debugging X++ code allows you to step through the code, view values in variables, and fix issues in the code.
- How To Debug D365
- How To Debug D365 Part 2
- How To Load D365 Debug Symbols
- How To Debug Batch Jobs In D365
After learning the basics of debugging, I highly recommend you check out the debugging practice tutorials in the section below.
Chain Of Command
In Microsoft Dynamics 365 for Finance and Supply Chain, base Microsoft code cannot be modified directly. Instead, Microsoft provides ‘Chain of Command’ to allow developers to add additional code before and after the base code runs. Notably, this allows developers to set new fields, as well as change existing values. This functionality is very important to learn.
- Chain of Command In D365 Fundamentals
- Chain of Command Table Methods
- Chain of Command Class Methods
- Chain of Command Form Methods
- Chain of Command Form DataSource Methods
- Chain of Command Form DataSource Field Methods
- Chain of Command Form Control Methods
- Chain of Command Data Entity Methods
There are a few more advanced scenarios where chain of command can be used.
- How To Override An Existing Lookup Method: Using Chain Of Command
- Override The JumpRef On A Base Form
Event Handlers
Event handlers are similar to ‘Chain of Command’. They allow custom code to be added around the base Microsoft code. Interestingly, different developers may like using one technique over than the other. This is often based on which technique they learned first and which one they are most comfortable writing.
In my opinion, Chain of Command is easier to write and is more readable. Therefore, my recommendation is that you learn both, so that you recognize Event Handlers when you see it. However, I would recommend always use Chain of Command when you write new code.
Data Entities
Data Entities are a great way of allowing outside systems to read data from D365, as well as insert and update data in D365.
Read And Write Files
- How To Read A File In D365
- Export Data To Excel In D365
- Update Data From Excel In D365
- Write A File In D365
Batch Jobs
SysOperation Framework Batch Jobs
- SysOperation Framework in D365
- D365 SysOperation Framework Parameters
- D365 SysOperation Framework Lookup
- D365 SysOperation Framework Default Value
- D365 SysOperation Framework Validation
- D365 SysOperation Framework Mandatory
If needed, you can also create a multi-threaded batch job.
RunBaseBatch Batch Jobs
Microsoft recommends all new batch jobs be created using SysOperation Framework. That said, there are still batch jobs in Microsoft’s base code that use RunBaseBatch. Therefore, it is important that you also learn how to read a RunBaseBatch class.
Testing Data Entities Using Postman
Custom Services
Customer Services in D365 X++ development allows outside systems to send information into D365, run X++ code, and return data.
- Setup Postman To Call D365 Services
- Create A Custom Service in D365
- Create a Complex Service in D365
Development Tips and Tricks
- D365 Development Tips and Tricks
- Generate Classes From Data
- X++ Extreme: Boost Your Development Skills With Proven Tips and Tricks
- How To View D365 Sales Order Totals
Environment Tutorials
- How To Run A D365 Job In Production
- How To Use The D365 Table Browser
- How To Connect To A Test D365 Database
- How To Install A Package In D365
Debugging Practice
In the section above, you learned how to debug your D365 X++ development. However, it takes practice to learn where to put a breakpoint in code, and how to find the root cause of the error. I highly recommend the following tutorials.
SSRS Reports
Business Events
Business events allow developers to send messages to outside systems when certain events happen within D365.
- How to setup business event end points
- How To Setup D365 Business Events Part 2
- How to Setup A Custom D365 Business Event
- Return JSON From D365 Business Events
Commerce Build and Deploy
- Deploy Commerce Self-Service Packages
- Build A Retail Deployable Package
- Build And Deploy A Commerce Scale Unit Package
Microsoft Teams At Priority Bicycles
Content Creation
Conclusion
I strongly believe that by reading and/or watching the videos in the above tutorials, you will learn the skills needed to become an expert in D365 X++ Development. If you have further suggestions, feel free to send me a message on LinkedIn. Or, feel free to share about your learning journey. I love hearing those stories. I hope you learned something new today!