Skip to main content

Object Definition Instance Commands Reference

Overview

Object Definition Instance Commands manage individual form instances attached to business entities. While Object Definitions define the template structure, Object Definition Instances are the actual filled-out forms with data specific to a particular Loan, Customer, Account, or Transaction.

What are Object Definition Instances?

Object Definition Instances are completed forms that:

  • Store Entity-Specific Data - Actual values for a specific loan, customer, etc.
  • Track Version History - Record which template version was used
  • Support Multiple Instances - Multiple forms per entity (e.g., multiple guarantors)
  • Maintain Context - Store form data as JSON
  • Enable Tracking - Use tracker IDs to group related instances

Relationship

ObjectDefinition (Template)

ObjectDefinitionInstance (Filled Form)

Entity (Loan #12345)

Example Flow

  1. Create Template: loan_guarantor Object Definition
  2. Create Instance: Fill out guarantor form for Loan #12345
  3. Add Another: Create 2nd guarantor instance (trackerId="guarantor_2")
  4. Update: Modify guarantor information
  5. Query: Retrieve all guarantors for Loan #12345

Commands Reference

CreateObjectDefinitionInstanceCommand

Create a new instance of an Object Definition for a specific entity.

File: CB.Administration.Api/Commands/BPM/ObjectDefinition/ObjectDefinitionInstanceCommands.cs

Request

{
"objectDefinitionId": 45,
"entityId": 12345,
"context": "{\"creditScore\":720,\"riskRating\":\"Low\",\"assessmentDate\":\"2026-01-19\",\"comments\":\"Excellent credit history\"}",
"notes": "Initial credit assessment completed",
"trackerId": null
}

Alternative - Using Code:

{
"objectDefinitionUniqueIdentifier": "loan_credit_assessment",
"entityId": 12345,
"context": "{\"creditScore\":720,\"riskRating\":\"Low\"}",
"notes": "Initial assessment"
}

Request Fields

FieldTypeRequiredDefaultDescription
objectDefinitionIdlongOne Required-Object Definition ID
objectDefinitionUniqueIdentifierstringOne Required-Object Definition code
entityIdlongYes-Entity ID (loan, customer, etc.)
contextstringNo""JSON string containing form data
notesstringNonullAdditional notes
trackerIdstringNonullTracker ID for grouping instances

Note: Either objectDefinitionId OR objectDefinitionUniqueIdentifier must be provided. trackerId is required when creating multiple instances.

Response

Success:

{
"isSuccessful": true,
"message": "ObjectDefinitionInstance created successfully",
"data": {
"id": 501,
"objectDefinitionId": 45,
"objectDefinitionCode": "loan_credit_assessment",
"objectDefinitionName": "Loan Credit Assessment Form",
"entityId": 12345,
"context": "{\"creditScore\":720,\"riskRating\":\"Low\",\"assessmentDate\":\"2026-01-19\"}",
"trackerId": null,
"objectDefinitionVersion": 1,
"notes": "Initial credit assessment completed",
"isActive": true,
"createdByUserId": "user_123",
"createdAt": "2026-01-19T10:30:00Z"
}
}

Error - Multiple Instances Not Allowed:

{
"isSuccessful": false,
"message": "An active instance already exists for this entity. This ObjectDefinition does not allow multiple instances."
}

Error - Invalid JSON:

{
"isSuccessful": false,
"message": "Invalid JSON in context field."
}

UpdateObjectDefinitionInstanceCommand

Update an existing Object Definition Instance.

File: CB.Administration.Api/Commands/BPM/ObjectDefinition/ObjectDefinitionInstanceCommands.cs

Request

{
"id": 501,
"context": "{\"creditScore\":730,\"riskRating\":\"Low\",\"assessmentDate\":\"2026-01-19\",\"comments\":\"Credit score improved\"}",
"notes": "Updated after additional income verification",
"trackerId": "assessment_v2",
"isActive": true
}

Request Fields

FieldTypeRequiredDescription
idlongYesInstance ID to update
contextstringNoUpdated form data (JSON string)
notesstringNoUpdated notes
trackerIdstringNoUpdated tracker ID
isActiveboolNoUpdated active status

Response

Success:

{
"isSuccessful": true,
"message": "ObjectDefinitionInstance updated successfully",
"data": {
"id": 501,
"context": "{\"creditScore\":730,\"riskRating\":\"Low\",\"assessmentDate\":\"2026-01-19\",\"comments\":\"Credit score improved\"}",
"notes": "Updated after additional income verification",
"trackerId": "assessment_v2",
"updatedAt": "2026-01-19T11:00:00Z"
}
}

DeleteObjectDefinitionInstanceCommand

Delete an Object Definition Instance.

File: CB.Administration.Api/Commands/BPM/ObjectDefinition/ObjectDefinitionInstanceCommands.cs

Request

{
"id": 501
}

Response

Success:

{
"isSuccessful": true,
"message": "ObjectDefinitionInstance deleted successfully"
}

GetObjectDefinitionInstanceByIdQuery

Retrieve a specific instance by ID.

File: CB.Administration.Api/Commands/BPM/ObjectDefinition/ObjectDefinitionInstanceCommands.cs

Request

{
"id": 501
}

Response

Success:

{
"isSuccessful": true,
"message": "ObjectDefinitionInstance retrieved successfully",
"data": {
"id": 501,
"objectDefinitionId": 45,
"objectDefinitionCode": "loan_credit_assessment",
"objectDefinitionName": "Loan Credit Assessment Form",
"entityId": 12345,
"entityType": 3,
"entityTypeDesc": "Loan",
"context": "{\"creditScore\":720,\"riskRating\":\"Low\"}",
"contextParsed": {
"creditScore": 720,
"riskRating": "Low",
"assessmentDate": "2026-01-19",
"comments": "Excellent credit history"
},
"trackerId": null,
"objectDefinitionVersion": 1,
"notes": "Initial credit assessment completed",
"isActive": true,
"createdByUserId": "user_123",
"createdAt": "2026-01-19T10:30:00Z",
"updatedAt": "2026-01-19T11:00:00Z"
}
}

GetObjectDefinitionInstanceByTrackerIdQuery

Retrieve an instance by Tracker ID.

File: CB.Administration.Api/Commands/BPM/ObjectDefinition/ObjectDefinitionInstanceCommands.cs

Request

{
"trackerId": "guarantor_1",
"entityId": 12345,
"objectDefinitionId": 47
}

Alternative - Using Code:

{
"trackerId": "guarantor_1",
"entityId": 12345,
"objectDefinitionUniqueIdentifier": "loan_guarantor"
}

Request Fields

FieldTypeRequiredDescription
trackerIdstringYesTracker ID to search for
entityIdlongYesEntity ID
objectDefinitionIdlongOne RequiredObject Definition ID
objectDefinitionUniqueIdentifierstringOne RequiredObject Definition code

Response

Success:

{
"isSuccessful": true,
"message": "ObjectDefinitionInstance retrieved successfully",
"data": {
"id": 502,
"objectDefinitionId": 47,
"entityId": 12345,
"context": "{\"firstName\":\"John\",\"lastName\":\"Doe\"}",
"trackerId": "guarantor_1",
"isActive": true
}
}

GetObjectDefinitionInstancesByEntityQuery

Get all instances for a specific entity.

File: CB.Administration.Api/Commands/BPM/ObjectDefinition/ObjectDefinitionInstanceCommands.cs

Request

{
"entityId": 12345,
"entityType": 3,
"objectDefinitionId": 47,
"trackerId": null,
"includeInactive": false
}

Alternative - Using Code:

{
"entityId": 12345,
"entityType": 3,
"objectDefinitionUniqueIdentifier": "loan_guarantor",
"includeInactive": false
}

Request Fields

FieldTypeRequiredDefaultDescription
entityIdlongYes-Entity ID
entityTypeintNonullFilter by entity type
objectDefinitionIdlongNonullFilter by definition ID
objectDefinitionUniqueIdentifierstringNonullFilter by definition code
trackerIdstringNonullFilter by tracker ID
includeInactiveboolNofalseInclude inactive instances

Response

Success:

{
"isSuccessful": true,
"message": "ObjectDefinitionInstances retrieved successfully",
"data": [
{
"id": 501,
"objectDefinitionId": 45,
"objectDefinitionCode": "loan_credit_assessment",
"objectDefinitionName": "Loan Credit Assessment Form",
"entityId": 12345,
"context": "{\"creditScore\":720}",
"trackerId": null,
"isActive": true,
"createdAt": "2026-01-19T10:30:00Z"
},
{
"id": 502,
"objectDefinitionId": 47,
"objectDefinitionCode": "loan_guarantor",
"objectDefinitionName": "Loan Guarantor Information",
"entityId": 12345,
"context": "{\"firstName\":\"John\",\"lastName\":\"Doe\"}",
"trackerId": "guarantor_1",
"isActive": true,
"createdAt": "2026-01-19T10:45:00Z"
},
{
"id": 503,
"objectDefinitionId": 47,
"objectDefinitionCode": "loan_guarantor",
"objectDefinitionName": "Loan Guarantor Information",
"entityId": 12345,
"context": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\"}",
"trackerId": "guarantor_2",
"isActive": true,
"createdAt": "2026-01-19T11:00:00Z"
}
]
}

GetObjectDefinitionInstancesByDefinitionQuery

Get all instances for a specific Object Definition.

File: CB.Administration.Api/Commands/BPM/ObjectDefinition/ObjectDefinitionInstanceCommands.cs

Request

{
"objectDefinitionId": 47,
"trackerId": null,
"includeInactive": false,
"pageIndex": 0,
"pageSize": 20
}

Alternative - Using Code:

{
"objectDefinitionUniqueIdentifier": "loan_guarantor",
"includeInactive": false,
"pageIndex": 0,
"pageSize": 20
}

Request Fields

FieldTypeRequiredDefaultDescription
objectDefinitionIdlongOne Required-Object Definition ID
objectDefinitionUniqueIdentifierstringOne Required-Object Definition code
trackerIdstringNonullFilter by tracker ID
includeInactiveboolNofalseInclude inactive instances
pageIndexintNo0Page index (0-based)
pageSizeintNo20Results per page

Response

Success:

{
"isSuccessful": true,
"message": "ObjectDefinitionInstances retrieved successfully",
"data": {
"items": [
{
"id": 502,
"entityId": 12345,
"entityType": 3,
"context": "{\"firstName\":\"John\",\"lastName\":\"Doe\"}",
"trackerId": "guarantor_1",
"isActive": true,
"createdAt": "2026-01-19T10:45:00Z"
},
{
"id": 503,
"entityId": 12345,
"entityType": 3,
"context": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\"}",
"trackerId": "guarantor_2",
"isActive": true,
"createdAt": "2026-01-19T11:00:00Z"
},
{
"id": 504,
"entityId": 67890,
"entityType": 3,
"context": "{\"firstName\":\"Bob\",\"lastName\":\"Johnson\"}",
"trackerId": "guarantor_1",
"isActive": true,
"createdAt": "2026-01-19T11:15:00Z"
}
],
"totalCount": 156,
"pageIndex": 0,
"pageSize": 20,
"totalPages": 8
}
}

Tracker IDs

Tracker IDs help organize multiple instances per entity.

Use Cases

Multiple Guarantors:

{
"objectDefinitionUniqueIdentifier": "loan_guarantor",
"entityId": 12345,
"trackerId": "guarantor_1",
"context": "{\"firstName\":\"John\",\"lastName\":\"Doe\"}"
}

{
"objectDefinitionUniqueIdentifier": "loan_guarantor",
"entityId": 12345,
"trackerId": "guarantor_2",
"context": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\"}"
}

Multiple Collateral Items:

{
"objectDefinitionUniqueIdentifier": "loan_collateral",
"entityId": 12345,
"trackerId": "collateral_property",
"context": "{\"type\":\"Real Estate\",\"value\":5000000}"
}

{
"objectDefinitionUniqueIdentifier": "loan_collateral",
"entityId": 12345,
"trackerId": "collateral_vehicle",
"context": "{\"type\":\"Vehicle\",\"value\":2000000}"
}

Benefits

  • ✅ Easily identify specific instances
  • ✅ Group related instances
  • ✅ Enable targeted updates
  • ✅ Simplify querying

Context Format

The context field stores form data as a JSON string.

Simple Context

{
"context": "{\"creditScore\":720,\"riskRating\":\"Low\",\"assessmentDate\":\"2026-01-19\"}"
}

Complex Context

{
"context": "{\"personalInfo\":{\"firstName\":\"John\",\"lastName\":\"Doe\",\"dateOfBirth\":\"1985-05-15\"},\"employmentInfo\":{\"employer\":\"ABC Corp\",\"position\":\"Manager\",\"monthlyIncome\":500000},\"documents\":[{\"documentType\":\"ID Card\",\"documentNumber\":\"ID123456\",\"expiryDate\":\"2030-12-31\"},{\"documentType\":\"Passport\",\"documentNumber\":\"A1234567\",\"expiryDate\":\"2028-06-30\"}]}"
}

Parsed Context

Responses include contextParsed for easy consumption:

{
"context": "{\"creditScore\":720}",
"contextParsed": {
"creditScore": 720,
"riskRating": "Low"
}
}

Version Tracking

Instances track which template version was used.

Example

{
"objectDefinitionVersion": 1,
"objectDefinitionId": 45,
"createdAt": "2026-01-19T10:30:00Z"
}

Benefits:

  • Data Integrity - Know which template structure was used
  • Migration Support - Handle template updates gracefully
  • Audit Trail - Track template changes over time

Best Practices

1. Use Tracker IDs for Multiple Instances

GOOD:

{
"trackerId": "guarantor_1",
"context": "{\"firstName\":\"John\"}"
}

BAD:

{
"trackerId": null,
"context": "{\"guarantorNumber\":1,\"firstName\":\"John\"}"
}

2. Structure Context Data Properly

GOOD:

{
"context": "{\"personalInfo\":{\"firstName\":\"John\",\"lastName\":\"Doe\"},\"contactInfo\":{\"email\":\"john@example.com\"}}"
}

BAD:

{
"context": "{\"field1\":\"John\",\"field2\":\"Doe\",\"field3\":\"john@example.com\"}"
}

3. Add Meaningful Notes

GOOD:

{
"notes": "Initial credit assessment - submitted by loan officer Mary Jane on 2026-01-19"
}

BAD:

{
"notes": "Done"
}

4. Validate JSON Before Submitting

Always validate your context JSON:

// Good practice
try {
JSON.parse(contextString);
// Proceed with submission
} catch (error) {
// Handle invalid JSON
}

Integration Examples

Example 1: Create Credit Assessment

POST /api/commands/execute
{
"commandName": "CreateObjectDefinitionInstanceCommand",
"data": {
"objectDefinitionUniqueIdentifier": "loan_credit_assessment",
"entityId": 12345,
"context": "{\"creditScore\":720,\"riskRating\":\"Low\",\"assessmentDate\":\"2026-01-19\",\"comments\":\"Excellent credit history, approved for high value loans\"}",
"notes": "Initial assessment completed by credit officer"
}
}

Example 2: Add Multiple Guarantors

// First guarantor
POST /api/commands/execute
{
"commandName": "CreateObjectDefinitionInstanceCommand",
"data": {
"objectDefinitionUniqueIdentifier": "loan_guarantor",
"entityId": 12345,
"trackerId": "guarantor_1",
"context": "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"relationship\":\"Brother\",\"phoneNumber\":\"08012345678\",\"address\":\"123 Lagos Street\"}",
"notes": "Primary guarantor"
}
}

// Second guarantor
POST /api/commands/execute
{
"commandName": "CreateObjectDefinitionInstanceCommand",
"data": {
"objectDefinitionUniqueIdentifier": "loan_guarantor",
"entityId": 12345,
"trackerId": "guarantor_2",
"context": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\",\"relationship\":\"Friend\",\"phoneNumber\":\"08087654321\",\"address\":\"456 Abuja Avenue\"}",
"notes": "Secondary guarantor"
}
}

Example 3: Update Instance Data

POST /api/commands/execute
{
"commandName": "UpdateObjectDefinitionInstanceCommand",
"data": {
"id": 501,
"context": "{\"creditScore\":730,\"riskRating\":\"Low\",\"assessmentDate\":\"2026-01-19\",\"comments\":\"Credit score improved after debt consolidation\"}",
"notes": "Updated after additional income verification and debt consolidation"
}
}

Example 4: Query Entity Instances

POST /api/commands/execute
{
"commandName": "GetObjectDefinitionInstancesByEntityQuery",
"data": {
"entityId": 12345,
"entityType": 3,
"includeInactive": false
}
}

Error Handling

Common Errors

Instance Not Found:

{
"isSuccessful": false,
"message": "ObjectDefinitionInstance with ID 501 not found."
}

Multiple Instances Not Allowed:

{
"isSuccessful": false,
"message": "An active instance already exists for this entity. This ObjectDefinition does not allow multiple instances."
}

Max Instances Exceeded:

{
"isSuccessful": false,
"message": "Cannot create instance: Maximum of 3 instances allowed for this definition"
}

Invalid JSON in Context:

{
"isSuccessful": false,
"message": "Invalid JSON in context field."
}

Object Definition Not Found:

{
"isSuccessful": false,
"message": "ObjectDefinition with ID 45 not found."
}

Tracker ID Required:

{
"isSuccessful": false,
"message": "TrackerId is required when creating multiple instances of this ObjectDefinition."
}

See Also


Last Updated: January 19, 2026
Version: 1.0