Get the latest perspectives on Microsoft Dynamics ERP software selection process from industry experts.

Getting Started with Microsoft D365 Development

Visit Website View Our Posts

Microsoft D365 Finance and Supply Chain Management (D365 F&SCM) is a complete Enterprise Resource Planning system that can be extended to address unique business requirements. To help understand the depth of the development capabilities, it will help to have a short history of the evolution of D365 F&CSM.  This is important because the foundation of D365 F&SCM was designed to be extended.

The preceding system of D365 F&SCM was created by Damgaard Data, and it was called Axapta. I became aware of Axapta in 1998 through a two-paragraph article in a computer publication announcing that a Danish company had released a COM-based ERP system. COM is the Component Object Model which would enable us to build reliable integrations with external systems by leveraging objects within the ERP system.

History

Damgaard Data was led by the Damgaard brothers, Preben and Erik. Both were co-CEOs of the company, but Preben was primarily the business manager, and Erik was the software architect.  The Damgaards had extensive experience building and marketing business systems.

In the early to mid-90’s they set out to develop a COM-based Enterprise Resource Planning system. This was a completely new and different system built upon object-oriented technologies. They purposefully changed their development methodology to the prescribed strategies used by Microsoft to allow them to take advantage of how to construct the new system, which was called Axapta.

Axapta had unparalleled flexibility. MorphX enabled screens to dynamically change without any coding as fields were added and removed. The Application Object Tree (AOT) allowed all objects in the system to be visualized along with drag and drop capabilities. Additionally, the initial versions of Axapta allowed the user to select one of three databases: Damgaard ISAM database, Oracle, or Microsoft SQL. The system was even capable of moving to Linux if required.

Custom code in Axapta was intelligently segregated into layers from the kernel code, leaving the system layer untouched.  This allowed extensions from different sources to be added to the system and parked in the appropriate layer; contrasting with other systems which had one code set, and when altered became a custom code set for that specific system. The extensions could not be easily removed. Third-party extensions could be added, or the extensions were kept completely outside of the ERP system.

The layered architecture provided Axapta with a foundation to effectively manage custom code. Damgaard actively promoted the idea that the software solved only 80% of a company’s requirements, leaving the last 20% up to local or internal resources.  Microsoft has significantly evolved Axapta, or rather its successor, AX2012, into Microsoft Dynamics 365 F&SCM.  Today, there has been considerable depth added to the entire system making D365 F&SCM a strong, reliable, comprehensive ERP system.

Extending Microsoft D365 F&SCM

Now that we have provided background, how do you get started with extending Microsoft D365 F&SCM?  Extensions can range from adding a single field and validation table to adding a complex subsystem. The key is in understanding how the kernel will manage the extensions, and this understanding starts with making small changes.

Based on our experience, this is what we recommend for getting started with developing in Microsoft D365 F&SCM:

  1. Understand the functional area that you would like to extend in detail. Enter transactions from start to finish, so you understand what you need to test to make sure your work is properly done. This is critical because we have witnessed many systems where the developer failed to understand the application and addressed the requirement inappropriately - even though they had a good understanding of what was needed. The lack of understanding of the application then contributes to adding redundant processes that are not as thorough as the standard processes within D365 F&SCM.
  2. Gain a workable knowledge of X++ and C#. If you have a JAVA background, you should be able to transition to both. X++ is the programming language used to code application logic, and this will be what you will use to customize the system. All form object methods, table object methods, and classes will be coded using X++. C# will be used to handle external services and integration into external applications.
  3. Have a strong understanding of Visual Studio (VS) from 2022 or greater. This is where you will be working with the code & debugging software, so having a strong working knowledge of VS will benefit. One tip regarding VS is to focus on the debugger. Competent use of the debugger will help you be a much more productive programmer.
  4. Become a student of the Application Object Tree (AOT) and learn what objects there are, how they are represented, and how they are used. You will spend a lot of time transversing through the AOT, adding objects, and finding objects to extend. Knowing where to go to find existing objects is crucial to introducing any changes into the system.
  5. Start small and then build up. Add a new field or Enumerated List (Enum) to the AOT, then add the field to a table. Add the new field to a field group, then view the form. Gain an understanding of how the kernel manages new objects that you add to the system. From there, try building a basic table, and then create a form. An example is a customer preference code which consists of a code and description. This task adds a little excitement and helps motivate you to dive deeper.
  6. Identify the objects from within the D365 F&SCM by doing a right click >> more information to get the object name. This will be your starting point when you want to modify or analyze objects. Also, hunt for the object you see on the surface of D365 within the AOT by examining each node.
  7. Analyze the classes and try to extend one by modifying the return value of the super class. This will be your key to separating your code from the standard kernel along with creating a more reliable extension that can be easily upgraded. Do not start with a major posting class but a smaller class. My preference is to create a class that calls a standard class and then have it executed from a form I have created that displays the results. On the form, I would normally have an input and then the action button that executes the class, which consumes my input to return a calculated value.
  8. Know when to use a table value verses an Enum. Enums should be used to trigger the execution of specific branches of code, such as using an order date or ship date when calculating the invoice date. This is a simple example, but it highlights whether the code should execute this or that condition.
  9. Plan, plan, and plan again. Know what you want to do before you do it. Do not skimp on your deskwork in preparing for how you will approach an extension. This will help you make fine “surgical incisions” into the D365 F&SCM instead of making bulldozer style changes. Surgical extensions are significantly easier to complete and support.

Summary

Microsoft D365 F&SCM is an exceptional Enterprise Resource Planning system, and when extended properly will deliver decades of value. Furthermore, when the extensions are properly done, they are upgradable with minimal technical attention.

The technical team at Clients First Business Solutions has been implementing extensions since the inception of D365 F&SCM, as well as extending the preceding solutions, Damgaard Axapta and Dynamics AX.  This experience has enabled us to build complete subsystems that are in use for multi-location international deployments of D365 F&SCM.

Our team can provide the sophistication of D365 F&SCM coupled with a lean implementation to provide you with the best value for your implementation budget.

For additional information contact us at [email protected] or visit our website, www.cfbs-us.com.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.