D365 Code Generator is a lightweight, platform-independent Visual Studio 2022 extension designed to accelerate X++ development for Microsoft Dynamics 365 Finance & Operations. It instantly generates standardized, production-ready SysOperation framework code (Contract, Service, Controller) without relying on local Dynamics environment dependencies.
- ⚡ Instant Boilerplate Generation: Create full SysOperation patterns in seconds.
- 🌐 100% Platform Independent: Operates purely inside Visual Studio 2022. No dependencies on
Microsoft.Dynamics.*local DLLs. - 🎨 Modern WPF Interface: Intuitive parameter entry, automatic casing formatting, and seamless clipboard management.
- 📋 Standalone Output Tabs: Review and copy Contract, Service, and Controller classes independently.
- 🎯 Dynamic Code Customization: Automatically handles DataMember attributes, SysOperation labels, typed parameters, and synchronous execution modes.
- Open Visual Studio 2022.
- Go to Extensions > Manage Extensions.
- Search for D365 Code Generator and click Download.
- Restart Visual Studio to complete the installation.
- Open Visual Studio and navigate to the top menu: Extensions > SysOperation Builder...
- Enter your Base Name (e.g.,
CustUpdateProcess).- The Contract, Service, and Controller class names will auto-populate (
CustUpdateProcessContract,CustUpdateProcessService,CustUpdateProcessController).
- The Contract, Service, and Controller class names will auto-populate (
- Define your Contract Parameters in the grid:
- Data Type / EDT: e.g.,
CustAccount,boolean,int - Variable Name: e.g.,
custAccount - Label: e.g.,
@SYS12345or descriptive text.
- Data Type / EDT: e.g.,
- Click Generate Code.
- Switch between the output tabs (Contract Class, Service Class, Controller Class) and click 📋 Copy Code to paste directly into your X++ solution.
- Open any .xpp file in the Visual Studio code editor.
- Right-click anywhere in the code editor and select Snippet > Insert Snippet...
- Select the D365CodeGeneratorSnippets folder.
- Choose the desired Chain of Command template (e.g., D365 Class Extension).
Included templates for rapidly building Extension classes:
cocclass: D365 Class Extension (CoC)coctbl: D365 Table Extension (CoC)cocform: D365 Form Extension (CoC)cocfds: D365 Form DataSource Extension (CoC)
Example Output (Class Extension):
[ExtensionOf(classStr(ClassName))]
final class ClassName_Extension
{
}
[DataContractAttribute]
public class CustUpdateProcessContract
{
private CustAccount custAccount;
[DataMemberAttribute, SysOperationLabel(literalStr("@SYS12345"))]
public CustAccount parmCustAccount(CustAccount _custAccount = custAccount)
{
custAccount = _custAccount;
return custAccount;
}
}
public class CustUpdateProcessService extends SysOperationServiceBase
{
public void process(CustUpdateProcessContract _contract)
{
// TODO: Add your business logic here
// CustAccount _custAccount = _contract.parmCustAccount();
info("Process completed successfully.");
}
}
public class CustUpdateProcessController extends SysOperationServiceController
{
public void new()
{
super(classStr(CustUpdateProcessService),
methodStr(CustUpdateProcessService, process),
SysOperationExecutionMode::Synchronous);
}
public static void main(Args _args)
{
CustUpdateProcessController controller = new CustUpdateProcessController();
controller.parmArgs(_args);
controller.parmDialogCaption("CustUpdateProcessController operation is running...");
controller.parmShowDialog(true);
controller.startOperation();
}
}
- IDE: Visual Studio 2022 (v17.0 or higher)
- Framework: .NET Framework 4.8
Distributed under the MIT License. See LICENSE for more information.