Cloud consistency controls for addons, vertical, specifics

Classic Function Function code ACTLSPE

A common observation about Sage X3 technology is that the tool enables you to make a lot of modifications and offers a reasonable way for protecting these modifications by specific or vertical activity codes. It has also been observed that the patching process can be complex and difficult to automate, especially when conflicts and errors arise due to modifications that require manual intervention to resolve.

This is especially critical for the Cloud installations where the exploitation and therefore the application of patches must be fully automated.

For this reason, it is necessary to restrict the creation of specific and/or vertical developments by defining rules that regulate the dictionary modifications. Once validated, these rules can be used in two ways:

  • An implementation in the supervisor dictionary (additional controls). This is not implemented in the current version.

  • A checking tool that can be run on existing environments.

The purpose of this tool, a control program, is to check compliance of these rules with development performed in a folder.

Best practices to ensure cloud compatibility will evolve in the future, and the control program presented here will also evolve accordingly.

This document explains how the control program can be used and describes the rules that are checked today as well as expected improvements.

The control program is also available on request (dedicated patch) for the prior releases.

How to launch the tool

When the function is executed, a dialog box displays requiring the following information to be entered:

  • The folder to be checked (the current folder by default)
  • The reference folder that holds the standard dictionary (usually Sage X3 or HRM)
  • A check box that indicates if the detailed list of impacted elements must be given in the log

Click OK to run the tool. When complete, a log file displays that provides the following information:
* Risks are minor errors that might be considered in the future as stronger.
* Errors are errors that can cause new issues for patch installation.
* Fatal errors are errors that can compromise the normal behavior of the software or the patching process.

Cloud compatibility can be considered good if only Risks are detected, but they should be addressed in the future.
If Errors are detected, they must be fixed before cloud compatibility is ensured.
Fatal errors should prevent the use of the software on premise.

The log file looks like this:
Version V2015-04-20

Control of activity codes

No differences

Control of tables

...

Control of local menus

Fatal error: Local menu 588, cannot be modified, but the number of choices has been changed (2 instead of 3). Error: Local menu 1001, This specific local menu is not protected by an activity code

Control of screens

Fatal error: Screen APO1, block no 3 (), Specific development not allowed for an object of the "Supervisor" module ...

Control of processings

Risk: The processing AXDTCOR_201.adx that exists in the application X3 should not be in MYFOLDER ... Number of errors found : 6 fatal error(s), 6 error(s), 3 warning(s)

Controls performed and errors severity level

The following table lists all controls performed

Elements controlledType of controlSeverity
All supervisor elementsNo modification is allowed on supervisor elements (activity codes, tables, data types, miscellaneous tables, local menus, masks, windows, actions, classes, representations, parameters). Fatal error
Activity codesNaming range (X-Z) not respected.
Changes on min/max dimensions on standard activity codes.
Fatal error
Any entityNaming range (X-Z) not respected: applies on tables, data types, masks, windows, actions, classes, representations, parameters.
The same controls are done on numeric ranges for miscellaneous tables and local menus.
Error
Any entityStandard entity no more present: applies on tables, data types, masks, windows, actions, classes, representations, parameters, miscellaneous tables, local menus.Error
Any entityNaming range (X-Z) respected, but no specific activity code present on the entity, or a standard activity code is used: applies on tables, data types, masks, windows, actions, classes, representations, parameters.
The same controls are done on numeric ranges for miscellaneous tables and local menus.
Error
Any entityStandard activity code replaced by a specific one on a standard element: applies on tables, masks, windows, actions, classes, representations, parameters but not on data types.
The same controls are done on numeric ranges for miscellaneous tables and local menus.
Error
Additional sub elements in a standard entityNaming range not respected (X-Z): applies on columns in tables, fields in screens, properties or collections in classes and representations.Error
Additional sub elements in a standard entityNo specific activity code on them (X-Z): applies on columns in tables, and fields in screens.Error
Standard sub elements in a standard entityStandard activity code deleted or replaced by a specific one (X-Z): applies on columns in tables, fields in screens, properties or collections in classes and representations.Error
Columns in tablesActivity codes present on properties present on keys.Error
Standard data typeBasic data type changed (Integer to Char, Char to Decimal, Decimal to Integer...) or length/precision decreased.Error
Standard data typeLength/precision increased but without being protected by a specific activity code.Error
Standard no generic data typesLength/precision increased.Risk (1)
Standard miscellaneous tablesLength of codes decreased.Error
Standard miscellaneous tablesLength of codes increased.Risk
Standard miscellaneous tablesFlags company, site, mandatory modified, or length of code increased, without protection by a specific activity code.Error
Standard not modifiable local menusAny modification on the characteristics, including the addition of choices in the enumeration.Error
Standard not modifiable local menusSuppression of choices in the enumeration.Fatal error
Standard screensRenumbering of standard blocks.
Changing the type of a standard block.
Adding a specific block not protected by a specific activity code.
Changing a standard activity code on a standard block by a specific activity code.
Using a standard activity code on a specific block(2).
Error
Standard screen fieldsMoving a standard field from a block to another.Error
Standard windowsChanging the order of standard screens, deleting standard screens, assign to them a specific activity code or change it.Error
ActionsChanges done in standard actions (including changing the data types or number of parameters). Error
Standard methods / operations in classes / representationsChanging parameters type, name, number.Error
Specific methods / operations in classes / representationsnot following the codification range (X-Z), not protected by a specific activity code.Error

Notes

(1) The list of columns, fields... using the corresponding data type are listed if the Impact checkbox is set.

(2) The activity code must be specific, but can have a dependency formula based on a standard code value.

(3) Setting a specific activity code to a standard sub-element (column in a table, field in a mask, property in a class or representation) is forbidden. Changing some properties of these elements doesn't require to protect them by activity code:
* Changing a label can be done using the vocabulary adaptation function.
* Making a field mandatory can be done by adding a control.
* Enlarging the length can be done on the data type.
* Adding a button can be done without needing an activity code protection, as long as it is a specific action; adding a specific link on a standard class/representation is protected at the link level and not at the property level.