Portal Community

Setting the Default Strategy

// In ImportOptions:
{
  "targetTenantId":          "tenant-abc123",
  "defaultConflictStrategy": "Replace",  // Replace | Merge | Skip
  "dryRun":                  false,
  "importedBy":              "ci-pipeline@company.com"
}

Strategy Recommendations by Use Case

Use CaseRecommended Default StrategyReason
Environment promotion (dev → staging → prod)ReplaceSource is always authoritative; target should match exactly
First marketplace installSkipPreserve any existing local artifacts; install only what's new
Marketplace update installMerge (for eligible types) + Skip (others)Apply updates additively without overwriting local customizations
Disaster recovery restoreReplaceRestore from backup should overwrite current state
Tenant seeding (new tenant setup)SkipNo existing artifacts to conflict; Skip is safe default

Per-Artifact-Type Strategy Override

You can set different default strategies for different artifact types in ImportOptions:

{
  "defaultConflictStrategy": "Skip",
  "conflictStrategyOverrides": {
    "RuleSet":       "Merge",
    "EntitySchema":  "Merge",
    "AtlasForm":     "Skip",
    "ProcessDefinition": "Replace"
  }
}

In this example: workflows are always replaced (source authoritative), entity schemas and rule sets are merged (additive updates), forms are skipped (local customizations preserved).

Merge Fallback

When the default strategy is Merge but an artifact type does not support merge (e.g., AtlasForm), the engine falls back to the configured mergeFallbackStrategy:

{
  "defaultConflictStrategy": "Merge",
  "mergeFallbackStrategy":   "Skip"  // Applied when Merge is not supported for the artifact type
}

If mergeFallbackStrategy is not configured, the default is Skip for merge-ineligible artifacts.

No Default Strategy — Interactive Mode

If defaultConflictStrategy is omitted (or set to null) and conflicts are found, the import pauses at 202 Accepted and waits for manual resolution. This is the default behavior for interactive (non-CI) imports.

// ImportOptions with no default strategy:
{
  "targetTenantId": "tenant-abc123",
  "dryRun":         false
  // No defaultConflictStrategy — will pause if conflicts found
}