Let me start by saying there are a lot of moving parts inside of Sage ERP X3. This makes it extremely important for you to do all you can to track any changes that you make to the system. This allows you to do all you can to protect yourself from overwriting changes. This blog is not all inclusive and is to server as a general overview. If you want more information on this topic please refer to the Sage ERP X3 help. You can also take various Sage ERP X3 training. This is covered in System Administration as well as the Developer Track in more detail.
Activity Codes
can and are used for a variety of reasons in Sage ERP X3. I am outlining here how they can protect your changes from being overwritten. All changes should be marked with an activity code because patching will not overwrite a component that has an activity code that is not included in the patch.
- When the folder is revalidated, the object dictionary (tables, screens, etc.) is copied from the reference folder, overwriting existing objects. Only objects or object elements (field, indexes, etc.) that are flagged with a specific activity code are protected. Header level is the General Tab, do this on your own custom tables.
- Do not put a value in the Activity Code at the header level of a base X3 table. This will prevent any table alterations with a patch from being deployed which can cause errors with code.
- You can also put an Activity Code at the field level which will protect the field level from patches.
- You can put an Activity Code on Screens, Objects, Windows, as well as Fields within these components.
Activity Code that we would create should start with X, Y or Z. This allows you to inquiry on the enhancements. These rules are loosely enforced meaning they are for guidance and best practices recommendations. They are not strictly enforced rules by the system.
- X is used for US created and vertical enhancements
- Y is used for what you create for a customer as a Partner (Sage recommends to use one activity code per customer no matter how many mods)
- Z is used for a customer to use for anything they may do by themselves
Activity Code in relation to Database Tables
- The Activity Code field is used in conjunction with the Module field to determine whether or not the table will be created in the database of the folder.
- A table starting with X, Y, or Z is considered to be specific/custom and is not affected by a version change. These activity codes can be placed at the line level.
How to create an Activity Code in your implementation?
How to use the Activity Code in your implementation?
How to identify an Activity Code used within your implementation?
-
Searching: Development -> Utilities -> Searches -> Activity Code
-
Mass Validation of all screens, objects, windows, etc by Activity Code. Development -> Utilities -> Dictionary -> Validation
- Patches: This can be to test a patch install or even to create a patch from your customized enhancement. Development -> Utilities -> Patches ->
Patch Creation
Test a Patch
Custom modifications are protected by an activity code and Patch Test will display the Sage ERP X3 element (screen, table, window, etc.), along with the activity code when a potential conflict is present.
Configuring an Activity Code
You can create a new Activity Code at Development -> Data and Parameters -> Development Setup -> Activity Codes. Once you have an Activity Code Created you can use this for all of your changes. Here are 3 examples of how to use this Activity within the system for tracking. For the examples I have created an Activity Code 'RES' for tracking my changes.
-
Create a Table – You can put an Activity Code at the Table, Fields, Index, or View levels.
Header
Field
Index
-
Create a Screen – If you create a new screen or just want to flag an existing screen as changed, you can attach an Activity Code like 'RES' at the Screen level. This is true for Object and Window as well.
- Modify a Field on a Screen – You can attach an Activity Code like 'RES' to any Field you add to a screen.
It might have been better for me to do this sooner based on the fact that we made some changes and I could have included how to track these changes during those discussions. By doing it this way I am able to use those prior examples along with the best practices outlined above. I will use these practices in future blogs for repetition sake. Thanks again for taking the time to stop by my blog.