TeamcenterKnowledge

Engineering BOM Management ─ Deployment and Administration

Set custom rules to validate engineering BOM data

By default, Teamcenter provides a few rules to validate engineering BOM data, that is authored and updated in the context of an active change notice. After the data is validated, it can be released. You can also create additional custom validation rules.

Default validation rules

Part related business rules

Rule Information
PMA0_validate_part_and_aligned_design_maturity The maturity of the part cannot be higher than the maturity of the aligned design. By default, the maturity property of a design is not considered for the validation checks. This must be done by setting the Pma0IsMaturitySupportedForDesign preference to True.
PMA0_validate_parent_child_maturity The maturity of the parent part cannot be higher than the maturity of the child part.
PMA0_validate_part_design_material The part cannot be released if the material associated with it is different than the material of the aligned design. To set this validation rule, ensure that you have set up Integrated Material Management.

Part usage related business rules

Rule Information
Ebm0_validate_usage_maturity_with_part_maturity The maturity of the part usage cannot be higher than the maturity of its part.
Ebm0_validate_usage_release_if_part_is_not_released The part usage cannot be released if the corresponding part is not released. You can specify the maturity value from which this rule must be enabled on usages by using the preference Ebm0UsageMaturityToCheckPartMaturityBeforeRelease. This preference can have any value from the LOV Fnd0MaturityLOV. By default, this rule is enabled on usages having a maturity value greater than or equal to 20 (Pilot). For invalid values, the maturity value is considered as 20 (Pilot). The business object constant MaturityStatuses for any Item Revision subtype (for example, Part) holds custom release status names you define. If the object that is being validated has a status included in this list, it is considered as Released. This rule is evaluated for any such custom release status.
Ebm0_validate_usage_release_if_occurrence_not_aligned The part usage cannot be released if it is not aligned to a design occurrence. You can specify the maturity value from which this rule must be enabled on usages by using the preference Ebm0UsageMaturityToCheckOccAlignmentBeforeRelease. This preference can have any value from the LOV Fnd0MaturityLOV. By default, this rule is enabled on usages having a maturity value greater than or equal to 20 (Pilot). For invalid values, the maturity value is considered as 20 (Pilot). This rule is not applied if design required flag is false.
CM_rule_to_validate_eff_on_related_occs The usage of a part cannot be released if another logically related usage, created as a result of effectivity split, is released in another change notice where the release effectivity overlaps with that in the current change notice. To enable this validation, you can add this rule to the preference Pma0ChangePackageOOTBValidationRules in the format libcm:CM_rule_to_validate_eff_on_related_occs and then add this rule to the business object constant Pma0ChangePackageValidationConditions for the usage business object. For example, usage business object called Ebm0AbstractPartOccRevision.

Procedure

  1. To create a custom validation rule, create a new BMIDE template project, and add pma0automation as the dependent template. Additionally, if you are using Usage BOM, add ebm0enterprisebom as a dependent template.

  2. Expand the template project, and under Extensions, add the new extension (schema) file that contains the custom parts. Next, set this file as the active extension file.

  3. Author a new BMIDE condition within this template.

    The Signature of the condition must have the following 3 parameters:

    Parameter Description
    Part Revision This can be any business object that is qualified to be tracked under an active engineering change notice for the engineering BOM (Usage BOM or Assembly BOM). Examples include Part Revision, Usage Revision (EBM0AbstractPartOccRevision sub-types) or Design Revision. You can also use business objects of the type ItemRevision and its child types which are qualified as engineering parts and designs.
    WorkspaceObject This must be an engineering change notice.
    UserSession This is a user session object that controls the access-related checks in the code.

    The Expression can be direct logic written on a property of the business object (used in parameter 1, Part Revision), or it can be an operation written on the business object.

    • Write the logic in Expression using a property of the business object: for example, (p.fnd0Maturity > 30) AND (p.pma0LessFinish != "None")
    • Author an operation on the business object (used in parameter 1, Part Revision), and add the operation in the Expression field. Now, you can generate the C++ classes to implement the operation with the custom logic.
  4. Append the custom validation rule to the Pma0ChangePackageValidationConditions constant of the respective business object.

    1. Locate the required business object (for example, Part Revision).
    2. In the Business Object Constants tab, locate Pma0ChangePackageValidationConditions, and click Edit.
    3. In the Modify Business Object Constant dialog box, add the custom rule that you created as a comma-separated value. Here, you can choose to remove any default validation rules from the list.
  5. Save and deploy the template.

Source: https://docs.sw.siemens.com/en-US/doc/282219420/PL20251212545240207.ebom_admin/xid2060065 · retrieved 2026-07-11