Business Entity configuration[] holds runtime overrides for variables already declared on the Connected System. Each entry is name + value only — entity scope replaces the system default for that variable when CIP, sync, or capabilities run on this datasource.
Use this when one Connected System hosts multiple Business Entities that share connection/auth but need different vendor scope — for example one SharePoint integration with separate document libraries for deals, contracts, and general documents.
Why it matters
Connected System Configure system configuration defines what variables exist (name, location, required, portalInput). Business Entities declare which values differ per entity without duplicating auth, OpenAPI bindings, or CIP pipelines.
System configuration → declares SHAREPOINT_SITE_ID, SHAREPOINT_LIST_ID, …
Entity A configuration → overrides SHAREPOINT_LIST_ID → deals library GUID
Entity B configuration → overrides SHAREPOINT_LIST_ID → contracts library GUID
Entity C configuration → (no override) → uses system default list id
At runtime the platform merges system definitions with datasource overrides before resolving {{VARIABLE}} placeholders in CIP steps and OpenAPI paths.
Prerequisites
- Configure system configuration on
<systemKey>-system.jsonwith every variable you intend to override - Entity identity bands complete (
key,systemKey,entityType,resourceType, …) - CIP/OpenAPI paths reference configuration variables with
{{NAME}}syntax where appropriate
System vs entity configuration
| Aspect | Connected System (system.configuration) |
Business Entity (datasource.configuration) |
|---|---|---|
| Purpose | Declare variables for the whole integration | Override values per entity |
| Shape | name, value, location, required, optional portalInput |
name and value only |
| New variables | Yes — define keys here first | No — every name must exist on the parent system |
| Secrets / keyvault | location: keyvault allowed on system |
Cannot override keyvault variables |
| Auth | Never — use Configure authentication | Never |
Validation rejects entity overrides for unknown names, extra fields (location, required, …), or keyvault targets.
Where it lives
| Layer | Location |
|---|---|
| Variable definitions | <systemKey>-system.json → configuration[] |
| Per-entity overrides | <datasourceKey>.json → configuration[] |
| Runtime resolution | Merged map passed into CIP execution context |
| UI | Business Entity Configuration tab (?tab=configuration) |
Manifest section: datasource.configuration.
Builder MCP
| Manifest section | datasource.configuration |
| UI tab | Configuration (?tab=configuration) |
| Help topics | section, dependencyGraph |
| Repair hooks | — |
When reading help topic sections, distinguish system.configuration (definitions) from datasource.configuration (overrides).
How to set
1. Declare shared variables on the Connected System
Example — one SharePoint site, default list id, operator fills values at deploy:
{
"configuration": [
{
"name": "SHAREPOINT_SITE_ID",
"value": "{{SHAREPOINT_SITE_ID}}",
"location": "variable",
"required": true,
"portalInput": {
"field": "text",
"label": "SharePoint Site ID"
}
},
{
"name": "SHAREPOINT_LIST_ID",
"value": "{{SHAREPOINT_LIST_ID}}",
"location": "variable",
"required": true,
"portalInput": {
"field": "text",
"label": "Default document library (list GUID)"
}
}
]
}
2. Override per Business Entity (name + value only)
Deals library — same site, different list:
{
"key": "sharepoint-deals",
"displayName": "Deal documents",
"systemKey": "sharepoint-crm",
"entityType": "documentStorage",
"resourceType": "deal",
"configuration": [
{
"name": "SHAREPOINT_LIST_ID",
"value": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
]
}
Contracts library:
{
"key": "sharepoint-contracts",
"displayName": "Contract documents",
"systemKey": "sharepoint-crm",
"entityType": "documentStorage",
"resourceType": "contract",
"configuration": [
{
"name": "SHAREPOINT_LIST_ID",
"value": "f9e8d7c6-b5a4-3210-fedc-ba9876543210"
}
]
}
General documents — omit configuration[] to inherit the system default SHAREPOINT_LIST_ID.
Each entity still has its own resourceType, metadata schema, sync band, and CIP operations — only the resolved configuration values change.
3. Reference variables in CIP and OpenAPI bindings
Use {{SHAREPOINT_SITE_ID}} and {{SHAREPOINT_LIST_ID}} in path templates, query parameters, and CIP fetch steps. When execution runs for sharepoint-deals, the platform resolves SHAREPOINT_LIST_ID from the entity override; for sharepoint-documents it uses the system value.
4. Validate and upload
aifabrix validate <systemKey>
aifabrix datasource validate <datasourceKey>
aifabrix upload <systemKey> --probe
aifabrix test-integration <systemKey>
aifabrix datasource test-e2e <datasourceKey> --app <systemKey>
After upload, operators can adjust entity-specific values on the Business Entity Configuration tab without changing system-wide defaults.
Runtime merge behavior
For each name in system.configuration:
if datasource.configuration declares same name AND a stored datasource value exists
→ use datasource-scoped value
else
→ use system-scoped (or global, when enabled) value
Overrides affect this entity only — sync jobs, webhooks, and capabilities on sibling entities keep their own resolved values.
Defaults and examples
| Pattern | When to use |
|---|---|
| Shared site / tenant on system | One SHAREPOINT_SITE_ID or TENANT_ID for all entities |
| Per-library / per-folder override on entity | Different SHAREPOINT_LIST_ID, FOLDER_PATH, or API resource id |
No entity configuration[] |
Entity inherits all system defaults |
Literal value in override |
Fixed GUID or path known at manifest time |
{{NAME}} in override |
Template resolved at deploy like system entries |
| Do on system | Do on entity |
|---|---|
| Add new configuration variable | Override existing variable values |
Set required, portalInput |
name + value only |
| OAuth secrets, API keys | Never — authentication band only |
Validate
aifabrix validate <systemKey>
aifabrix datasource validate <datasourceKey>
Validation errors to expect:
| Error | Cause |
|---|---|
Override 'X' is not declared on the parent system |
Add X to system configuration[] first |
Override must contain only name and value |
Remove location, required, portalInput from entity file |
| Keyvault override not allowed | Change variable to location: variable on system, or do not override secrets |
Re-run integration/E2E per entity after override changes — a green system validate does not prove each library path resolves correctly.
Common mistakes
| Mistake | Fix |
|---|---|
| Full configuration object on entity file | Use name + value overrides only |
| New variable only on datasource | Declare on system first, then override on entity |
| Duplicate auth or secrets in entity config | Use system.authentications[] |
| Same list id on every SharePoint entity | Add per-entity SHAREPOINT_LIST_ID override |
| System tenant id copied into every entity | Keep shared ids on system; override only what differs |
| Skip validate after override edit | datasource validate + entity-scoped E2E |
Limits
- Override names must match system definitions exactly (uppercase
NAMEpattern). - Keyvault-backed system variables cannot be overridden at entity level.
- Entity configuration does not replace
documentStorage,sync, or CIP bands — it only changes resolved variable values at runtime.