Tenter de modifier un objet système ou une table d'audit dans Database Configuration peut soulever le code BMXAA0596E. Découvrez les règles de modification des objets.

Symptômes dans Database Configuration

Lorsqu'un administrateur tente de modifier les propriétés d'un attribut système ou d'activer l'audit sur une table protégée depuis l'application Database Configuration (MAXATTRIB / MAXOBJECT), le système refuse l'action et affiche l'erreur BMXAA0596E.

Fiche technique BMXAA0596E
Module System Configuration / Database Configuration
Code d'erreur BMXAA0596E
Message The object or attribute is a system object and cannot be modified.
Tables cibles MAXOBJECT, MAXATTRIBUTE, A_ (Tables d'audit)

Cause racine

Pour garantir la stabilité du dictionnaire de données et des mises à niveau automatiques (Updatedb), le dictionnaire Maximo protège certains objets natifs en positionnant la colonne ISINTERNAL = 1 ou USERDEFINED = 0. Toute tentative de modification via l'interface UI est interceptée et rejetée.

⚠️ Avertissement sur la modification en base de données Modifier directement la table MAXOBJECT via une requête SQL UPDATE pour forcer le drapeau USERDEFINED peut rendre les mises à jour ultérieures de MAS Manage totalement inopérantes.

Procédure recommandée

Option A : Utiliser des extensions de tables personnalisées (Vue/Relation)

Au lieu de modifier un attribut système natif non modifiable, créez un champ personnalisé (Custom Attribute) avec le préfixe de votre organisation (ex: PLUSC, XX ou CUST) :

  1. Dans Database Configuration, sélectionnez l'objet cible.
  1. Ajoutez un nouvel attribut nommé CUST_DESCR.
  1. Configurez les types de données et longueurs souhaités.
  1. Exécutez la mise à jour de la structure de base de données (Apply Database Changes).

Option B : Script d'automatisation sur la couche d'accès MBO

Pour altérer la valeur ou le comportement d'un champ système restreint, passez par un script d'automatisation au point d'extension de validation :

# Script sur l'événement INIT d'un MBO pour forcer la lecture seule
mbo = scriptWithParam.getMbo()
if mbo:
    mbo.setFieldFlag("SYS_ATTR_NAME", mbo.READONLY, True)

💡 Bonne pratique Ne modifiez jamais la taille ou le type de données des clés primaires système (WOID, ASSETID, PERSONID).

Résumé

  • L'erreur BMXAA0596E protège les objets du dictionnaire de données natifs contre les altérations.
  • La modification directe des objets internes (ISINTERNAL=1) est strictement proscrite par IBM.
  • Privilégiez la création d'attributs personnalisés ou l'utilisation d'Automation Scripts.

Articles liés