Upgrading to 9.x changes the format of BOM files

After upgrading to Operational Decision Manager 9.0 or later, the BOM files look different.

Symptoms

The public keyword is no longer shown in BOM files.

For example, here is a BOM file from 8.12:
public class Borrower
{
    public int creditScore;
    public readonly string name;
    public int yearlyIncome;
    public Borrower(string name, int creditScore, int yearlyIncome)
                property "ilog.rules.engine.dataio.forConversion" "true";
    public Borrower();
}
Here is the same BOM file after upgrading to 9.x:
class Borrower
{
    int creditScore;
    string name;
    int yearlyIncome;
    Borrower(string name, int creditScore, int yearlyIncome)
                #ilog.rules.engine.dataio.forConversion;
    Borrower();
}
Also, the properties are displayed differently, for example, this code is from 8.12:
property loadGetterSetterAsProperties "true"
After upgrading to 9.x, the property looks like this:
#loadGetterSetterAsProperties

Causes

This behavior is correct. The BOM format is different in 9.x:
  • The keyword public is no longer included in the BOM file.
  • Properties with a value of true are represented using a simplified syntax, as seen in the loadGetterSetterAsProperties example.
This change in the BOM format is intentional. It reduces the size of the BOM files to improve performance and efficiency in environments where BOM files are heavily used.