Docs‎ > ‎API Creator‎ > ‎Specify your Business Rules‎ > ‎

Create Managed Parent Rules

Managed Parent is a type of rule that automatically inserts a parent object if it does not already exist when a child is inserted.

This is done using the following algorithm:
  1. When a child object is inserted, the logic engine checks whether there are any managed parent rules for that table.
  2. If there are, then for each such rule the following occurs:
    • If the foreign key in the child object is null or incomplete, then nothing happens.
    • If the foreign key in the child object is complete, then the engine looks in the database to verify that the corresponding parent exists.
    • If the parent exists, then nothing happens.
    • If the parent does not exist, it is automatically created, and the attributes used in the foreign key are copied from the child into the new parent, thus establishing the relationship between the two.
  3. The new parent is optionally handed to your JavaScript code for further initialization. You do not need to write any code, unless you want to initialize the parent object beyond what is done automatically.
  4. The new parent is inserted into the database.
You can have have access to the usual variables (row, oldRow, and logicContext) by providing initialization code. The row and oldRow variables refer to the child object being modified. In addition, a variable called parent is inserted which contains the new parent about to be inserted. This allows you to modify this new parent object in whatever way you see fit, before it actually gets inserted. For example, you may need to compute the values for required attributes.

Processed prior to Row Logic

Managed Parent occurs before row logic. Formulas are not yet operational, so cannot be used to compute foreign keys.

For more information about logic execution and generated primary key handling, see Logic Execution.

Common Use Case - Group By

A common Use Case is to use Managed Parents for grouping totals. For more information about this example, see the "Group By Rollup" exampleThe Managed Parent is defined as follows.

You can test this by posting the following to PartnerOrder, and verifying that rows are created in empsales:

{
    "isReady": false,
    "approving_officer": "G PO.1",
    "salesrep_name": "A. Lincoln",
    "customer": "Gloria's Garden",
    "LineItems": [
    {   "productName": "Hammer",
"quantityOrdered": 1
    }
    ]
}