Development Guideline - Best Practices - D365 F&O
Table of Content:
Development Guideline - Best Practices
Think that you are working for the company "ATNYLA".
Model
There are 3 models namely,
- ATNYLAHelixCustomizations - Contains all Helix customizations
- ATNYLACCustomizations - Contains all Corp customizations
- ATNYLACIntegrations - Contains some integration customizations
Use primarily the ATNYLAHelixCustomizations model for any new development unless if the objects belong to other models, the continue your changes in the same model (Do not extend artifacts from ATNYLACCustomizations & ATNYLACIntegrations into ATNYLAHelixCustomizations model)
Projects
All developments will be tracked under DevOps types as Modification, Bug, Change request
TDD will be tracked as one or more Modifications depending on the no. of independent customizations
The project name should be defined as [MOD/BUG/CR] [DevOps ID] - [Short Description]
Example:
TDD – Return Order management [MOD 82910 – RET Order Mgmt]
BUG – RWA should not open for customer on credit hold [BUG 77856 – RWAForAccOnCreditHold]
Project Structure
Under the project we should follow the folder structure
All class should be inside a folder called “AxClass”
All tables should be inside a folder called “AxTables”
…..
New Objects
All new application object elements should start with prefix ATNYLA.
Format: [ATNYLA]ObjectName
Configuration key for all newly created object: ATNYLA
Examples:
-
✺ New EDT – ATNYLATreadDepth
-
✺ New Table – ATNYLAWarrantyClaimTable
-
✺ New Class – ATNYLAUpdateClaimDataService
-
✺ New Enum – ATNYLA<EnumName>
Object Extensions
Application object extensions should have suffix [.ATNYLA]
Format: ObjectName[.ATNYLA]
Examples
-
❑ Table extension – SalesLine.ATNYLA
1. Any new filed added inside the table should start with “ATNYLA” prefix
2. If any new method added, name should start with “ATNYLA” prefix
-
❑ Form extension – DeliveryTerms.ATNYLA
1. Any control added externally, control name should start with “ATNYLA” prefix
2. Any new method added, name should start with “ATNYLA”
-
❑ Entity extension – VendVendorV2Entity.ATNYLA
-
❑ Enum extension – SalesStatus.ATNYLA
1. New element name should start with prefix “ATNYLA”
Event Handler Class for Table
Event handler class for table should be named as [ATNYLA] TableName[EventHandler]
Example: ATNYLASalesLineEventHandler
Extension class for Table/Class
The extension class for table/class should be name as [ATNYLA]TableName[_Extension]
Example:
Table extension - ATNYLASalesLine_Extension
/// /// Extension methods for the [ExtensionOf(tableStr(SalesParmTable))] final class ATNYLASalesParmTable_Extension { }SalesParmTable table ///
Class extension – ATNYLASalesFormLetter_Extension
/// /// Extension class of SalesFormLetter /// [ExtensionOf(classStr(SalesFormLetter))] final class ATNYLASalesFormLetter_Extension { }
Coding guideline
1. No hard code string inside the code, always use label
2. Try to avoid all inline query instead of that AOT query
3. Always use multiline comment format instead of single line comment
/* comment here */
4. For lengthy and complex method try to use inline comment for better readability and understanding
5. For any conditional statement always use {} even if single line statement
If (true) { A =b; } // Not like below If (true) A =b;
6. All variable name should have some busines name and follow camel casing naming convention.
Correct: qbdsSalesOrder Not: qbds1
7. For any query or select statement please use the required field list instead of selecting all field.
8. If only one record is selecting please use firstonly.
9. For new tables, EDTS, View, forms use Microsoft define best practice along with [Company like Capgemini, Accenture, Cognizant, TCS, Infosys, Wipro] best practice
10. No commit on any reference table data inside modified field method, as user may be press esc button and undo the changes. But we left will commit data in reference table.
Instead of that use updated event handler and use original buffer and current buffer to compare changes.
Labels
New labels required should be created under ATNYLA_en-US
We should use prefix “ATNYLA” for label id
Comments
All modifications should have comments describing the DevOps Id for modifications/bug/change request and self-explanatory description.
Format: [Date (mm/dd/yyyy)] - [TCS] – [userid] - [BUG/MOD/CR] - [DevOps Id] - [Description]
Example:
//05/17/2021 - CompanyName[atnyla]- exta- - MOD 82910-RET Order Mgmt - Copy program information from sales invoice to return order – Start //05/17/2021 – CompanyName[atnyla]- exta- - MOD 82910-RET Order Mgmt - Copy program information from sales invoice to return order – End