Sage X3 is a powerful development platform with many built-in functions for different modules likes sales, purchasing, manufacturing, financials, etc. These modules have many functions, and almost every function can be modified, or new functions can be created.
In all cases, three levels of programming coexist:
Standard: This is the “out-of-the-box” code that controls the actions in the background. It is created by the software developer (For Enterprise Management, this would be Sage Group) and is applicable for the current function.
Vertical: This logic corresponds to “vertical” add-ons like Avalara, ADC, etc. Verticals are developments that can be applied to multiple companies. In other words, are not based on customer’s specific requirements.
Specific: This is the most important level/script for independent programmers, as this is where any customer specific customizations/modifications for the functionality of Enterprise Management should be maintained.
Sage EM will first execute Specific level script, then vertical script, and finally the standard one. Below there is an example from one of the many screens that make-up the Products screen. Please note that ITM indicates that this specific screen is related to the object ITM, which handles the product records:
Following the below naming convention keeps everything consistent, and makes for easier (future) maintenance:
Standard: SUB pre-fix plus the 3-character code for the Object, which in the above example is SUBITM
Vertical: SPV pre-fix plus the 3-character code for the Object, which in the above example is (would’ve been) SPVITM
Specific: SPE pre-fix plus the 3-character code for the Object, which in the above example is SPEITM
The flexible architecture of the software (with respect to the above levels/scripts) causes an inherent problem. Any function could be modified/customized by different programmers, at different points in time, as part of different developments, which has the potential of creating confusion and making it harder to maintain versions or troubleshoot any future problem.
The solution for organizing code is what we call “Switch” logic, which is the specific logic for making different calls for each modification/customization. In the example below, there are three different modifications/customizations that were done to this “ITM” screen:
SPEITM will be considered a switch logic because it allows switching to the appropriate logic, depending on the status of the Enterprise Management Activity Codes.
Sage X3 is an extremely flexible tool that allows developers to work independently on different modifications of the same function. Using the “switch” logic that we’ve explained here, facilitates programming, testing, documentation, backup, and deployments.