Overview
A Configuration Context consists of a set of dictionaries defining the criteria that can be used to configure the structure. Configuration Model, used for Configuration Context, is defined by Engineering. Manufacturing usually uses the same Configuration Model for configuring Manufacturing Structure (for example with different criteria). Manufacturing Engineer may create different BOM structure, valid for manufacturing which is not fully following assembly structure of Engineering BOM. In such case Configuration Models can be copied across the MBOM structure typically from a parent (like a Manufacturing Assembly) to a child (such as a sub-assembly). However, this copy operation must adhere to specific business rules to ensure data integrity.
This is where the Opening ID DELMA_CopyModelFromParentToChildValidation_ID comes into play.
Environment Details:
Version: 2025x FD03 (FP.CFA.2523)
Required Licenses
| License Name | Purpose |
| CSV | Collaborative Innovator |
| PPL | Create MBOM |
Refer to official 2025x documentation for license specifics.
Execution Context
| Aspect | Details |
|---|---|
| Type of Customization | Validation |
| Where it Runs | on Client side |
| Purpose | This logic is triggered only when a configuration model is about to be copied from a parent manufacturing object to a child. Its role is to:
This Opening ID works in conjunction with the user preference: "Copy model from parent to child Item or Process or Operation" |
How the Logic Works
Input Parameters
| Parameter | Type | Description |
|---|---|---|
| ThisObject | DELFmiFunctionReference | Item, system, or operation reference on which the configuration model may be copied |
| ihParentReference | DELFmiFunctionReference | Father from which the configuration model may be copied. |
Output Parameters
| Parameter | Type | Description |
|---|---|---|
| Validation | Boolean | TRUE if the copy of configuration model from the parent to the child is authorized. FALSE if the copy of configuration model from the parent to the child is not authorized. |
| Message | String | Explanation of the result (optional) |
Preference-Driven Behavior
This Opening ID’s execution is controlled by a preference (switch).
| Preference | Opening ID Result | Copy Model? |
|---|---|---|
| ✅ Checked | true or undefined | ✅ Yes |
| ✅ Checked | false | ❌ No |
| ❌ Unchecked | true or false | ❌ No |
If the preference is not enabled, the system blocks copying entirely, even if your custom logic returns true.
Use Case 1: Allow Copy for All Except Certain Child Types
Scenario:
Goal: Block configuration model copy when the child object types are Operation (e.g., "GeneralOperation", "LoadingOperation", etc.). Allow configuration model copy on System or workplan types and Header operation
Business Need:
Useful when specific child types are not meant to inherit configuration logic
Use Case 2: Allow Copy Only for Custom MBOM Types
Scenario:
Goal: Restrict configuration model copying to only when both parent and child are of type Cust_ManufacturingAssembly.
Business Need:
Some companies define a custom MBOM type for complex assemblies that use configuration models. To avoid confusion, such models should not be used across generic types.
EKL Flowchart and Logic:
FlowChart:
EKL Logic:
Note: Below BL can be written seperately for MBOM and Operation use-case as well. Use "DELFmiFunctionReference" for MBOM and use "DELLmiOperationReference" for operation use-case.
/* ============================================================================
Authorize Copy of Configuration Model from Parent to Child
Logic implemented in Opening ID: DELMA_CopyModelFromParentToChildValidation_ID
Purpose: Validate whether a configuration model can be copied from a parent
object (e.g., Assembly) to a child object (e.g., sub-assembly, operation)
============================================================================ */
/* ----------------------------
Declare the necessary variables
---------------------------- */
Let ihParentReference(PLMCoreReference) // Reference to the parent object (source of the model)
Let ChildReference(PLMCoreReference) // Reference to the child object (target of the model copy)
Let ChildType(Type) // Type object of the child
Let ChildTypeName(String) // Name of the primary type of the child
Let ReturnMessage(String) // Message to communicate result of validation
/* ----------------------------
Set the current object (ThisObject) as the child reference
---------------------------- */
set ChildReference = ThisObject
/* ----------------------------
Default the validation to false assume copy is blocked unless logic permits
---------------------------- */
Validation = false
/* ----------------------------
Initialize return message (empty)
---------------------------- */
ReturnMessage = ""
/* ----------------------------
Retrieve the parent object from parameters
---------------------------- */
set ihParentReference = Parameters->GetAttributeObject("ihParentReference")
/* ----------------------------
Proceed only if parent is not null
---------------------------- */
if (ihParentReference <> NULL) {
/* ----------------------------
Get the type and name of the child object
---------------------------- */
ChildType = ThisObject.PrimaryType
ChildTypeName = ChildType.Name
/* ============================================================
Use Case 1: Allow copy ONLY if both parent and child are
of custom type "Cust_Manufacturing_Assembly"
============================================================ */
if ((ChildReference.IsSupporting("Cust_Manufacturing_Assembly") == true) AND
(ihParentReference.IsSupporting("Cust_Manufacturing_Assembly") == true)) {
Validation = true // Allow model copy
}
/* ============================================================
Use Case 2: Allow copy if:
- Child is of type "DELLmiHeaderOperationReference"
OR
- Child type name contains "System" AND parent supports "PLMSystem"
This allows structured assignment (e.g., system-level copy)
============================================================ */
else if ((ChildTypeName == "DELLmiHeaderOperationReference") OR
(ChildTypeName.Search("System") > 0 AND ihParentReference.IsSupporting("PLMSystem") == true)) {
Validation = true // Allow model copy in system-structured contexts
}
/* ----------------------------
In all other cases, block the copy and log message
---------------------------- */
else {
Validation = false
ReturnMessage = "Model not copied on child #" + ThisObject.Name + " of type # " + ChildTypeName
}
}
/* ----------------------------
If parent is null, block copy and log message
---------------------------- */
else {
ReturnMessage = "Model not copied on child. Parent is null"
}
/* ----------------------------
Set the return message so it is visible in UI or log
---------------------------- */
Parameters.SetAttributeString("Message", ReturnMessage)
Example UseCase1:
User attaches the configuration model to the Root System, then creates the child structure as shown below.
Model is automatically attached to:
All General System nodes
All Header Operation nodes
Model is not attached to:
Other Operation nodes. Nodes that fail business rule conditions
If the type is not authorized (e.g., "Loading Operation"), the copy is blocked, and User receives a message:
Example UseCase2:
User attaches the configuration model to the Root System, then creates the child structure as shown below.
Model is automatically attached to:
All Custom Assembly nodes [Cust_Manufacturing_Assembly]
Model is not attached to:
Other nodes like ManufacturedPart.
If the type is not authorized (e.g., "ManufacturedPart"), the model copy is blocked, and User receives a message:
Alternate Applications
This logic can be enhanced for:
Lifecycle state checks (e.g., only copy if child is
In Work)Attribute-based validation (e.g., only if
Discipline = Manufacturing)Role-based control (allow only if the current user has a certain role)
Deployment Instructions
To deploy this Opening ID logic:
Use the Data Setup app. You may refer the below page for Business Rule deployment.
Set the following parameters:
Resource Set ID:(as defined by your business deployment strategy)
Opening ID:DELMA_CopyModelFromParentToChildValidation_ID
Fact Type:PLMCoreReference
Add the EKL logic corresponding to your use case.
Ensure the corresponding preference is enabled for the logic to activate.
Summary
| Aspect | Description |
|---|---|
| Opening ID | DELMA_CopyModelFromParentToChildValidation_ID |
| Purpose | Validates model copy from parent to child objects |
| Logic Type | Validation only (does not modify data) |
| Where It Runs | Client side (user interaction layer) |
| Controlled By | App preferences |
| Examples | Restrict copy to custom MBOMs, block based on type, etc. |
| Deployment Tool | Data Setup app |
References
