The promotion pipeline
flowchart LR
DEV[🔧 Development\nOIC Instance] -->|Export .iar| QA[🧪 Test / QA\nOIC Instance]
QA -->|UAT sign-off| PROD[🚀 Production\nOIC Instance]
subgraph Each environment
CON[Connections\nenv-specific config]
LKP[Lookup Tables\nenv-specific values]
INT[Integrations\nsame .iar file]
end
style DEV fill:#1e293b,stroke:#3B82F6,color:#e2e8f0
style QA fill:#1e293b,stroke:#F59E0B,color:#e2e8f0
style PROD fill:#0f2d1f,stroke:#22C55E,color:#e2e8f0
Step 1: Standardise connection names
Connection names must be identical across environments. Only the configuration (URL, credentials) differs.
| ❌ Wrong | ✅ Correct |
|---|---|
FUSION_ERP_REST_DEV | FUSION_ERP_REST |
ATP_DB_TEST | ATP_DB_MAIN |
SFTP_PARTNER_PROD | SFTP_PARTNER |
The connection name is embedded in the exported .iar file. If names differ, the import fails.
Step 2: Export as .iar via OIC REST API
Automate exports in your CI/CD pipeline:
# Export a specific integration version
curl -u "$OIC_USER:$OIC_PASS" \
-X GET \
"https://$OIC_HOST/ic/api/integration/v1/integrations/INVOICE_SYNC|01.00.0000/archive" \
-o "INVOICE_SYNC_v1.0.0.iar"
# Export all integrations matching a pattern
curl -u "$OIC_USER:$OIC_PASS" \
"https://$OIC_HOST/ic/api/integration/v1/integrations?q=name:INVOICE*" \
| jq '.items[].id' | while read id; do
curl -u "$OIC_USER:$OIC_PASS" \
"https://$OIC_HOST/ic/api/integration/v1/integrations/$id/archive" \
-o "${id//|/_}.iar"
done
Step 3: Import to target environment
# Import to target OIC instance
curl -u "$TARGET_USER:$TARGET_PASS" \
-X POST \
"https://$TARGET_HOST/ic/api/integration/v1/integrations" \
-H "Content-Type: application/octet-stream" \
-H "X-ICS-OVERWRITE: true" \
--data-binary @INVOICE_SYNC_v1.0.0.iar
Step 4: Post-import verification checklist
flowchart TD
IMP[Import .iar to target] --> CON{All connections\nresolved?}
CON -->|No - red indicators| FIX[Fix connection configs]
FIX --> CON
CON -->|Yes| LKP{Lookup tables\ncorrect for env?}
LKP -->|No| FIXL[Update lookup values]
FIXL --> LKP
LKP -->|Yes| SCHED{Scheduled triggers\nneed adjustment?}
SCHED -->|Yes| FIXS[Update cron/schedule]
FIXS --> SCHED
SCHED -->|Yes or N/A| CERT{Certificates &\nkeys uploaded?}
CERT -->|No| FIXC[Upload PGP/SSL/OAuth certs]
FIXC --> CERT
CERT -->|Yes| ACT[Activate integration]
ACT --> TEST[Run test instance]
TEST --> DONE[✓ Promotion complete]
style DONE fill:#0f2d1f,stroke:#22C55E,color:#e2e8f0
style FIX fill:#2d0f0f,stroke:#EF4444,color:#e2e8f0
Versioning strategy
Track every promotion in a simple log — OIC has no built-in changelog:
Integration: INVOICE_SYNC
Version: 2.1.0
Promoted: 2026-03-01 14:30 UTC
By: Anurag Jangra
Change: Added retry logic (3x with 30s delay) on REST 5xx errors
Environments: DEV → QA (UAT signed off by Finance team)
QA → PROD (Go-live approved by Project Manager)
Store this in Confluence, Notion, or a simple Git file. During incident investigation, this log is invaluable.