Territory model activation fails due to data integrity errors with account assignments

We’re attempting to activate a new territory model in Enterprise Territory Management for our Winter '25 org, but the activation process consistently fails with a data integrity error. This is blocking our planned territory realignment for Q3.

The error message appears during the sync process:


System.DmlException: Update failed
First exception on row 0; first error: FIELD_INTEGRITY_EXCEPTION
Account territory assignment conflict: duplicate assignment detected
Error fields: Territory2Id

Our new model includes updated assignment rules based on account industry and annual revenue. We’ve validated that all accounts have the required field data populated - Industry is set for 98% of accounts, and Annual Revenue exists for 95% of our active accounts. The territory hierarchy looks correct in the model builder.

The previous territory model is still running in production. We’re trying to activate the new model to run in parallel during a transition period. The assignment rules in the new model reference custom account fields that track regional preferences and product focus areas.

Has anyone successfully activated a new territory model while keeping the old one active? What could be causing this duplicate assignment conflict when the new model should be independent?

Your data integrity error stems from three specific issues that must be resolved before successful territory model activation.

First, address assignment rule conflicts systematically. The error message indicates duplicate Territory2Id assignments, which occurs when your assignment rules place the same account into multiple territories at the same hierarchy level. In Enterprise Territory Management, each account can belong to multiple territories across different levels, but only one territory per level. Review your assignment rule logic in the new model. Open Territory Model > Assignment Rules and examine each rule’s filter criteria. Look for overlapping conditions - for example, if Rule 1 assigns accounts where Industry = ‘Technology’ AND Annual Revenue > 1M to Territory A, and Rule 2 assigns accounts where Annual Revenue > 500K to Territory B, accounts meeting both criteria will trigger the duplicate assignment error. Ensure your rules are mutually exclusive at each hierarchy level by adding explicit exclusion criteria or adjusting the evaluation order with ‘Stop processing if this rule matches’ flags.

Second, resolve account field completeness issues comprehensively. Your 98% and 95% completion rates leave approximately 500-1000 accounts (assuming 25K total accounts) with missing critical data. Territory assignment rules in Winter '25 handle null values differently than previous releases. If your rules include criteria like ‘Industry equals Technology OR Manufacturing’ without null handling, accounts with null Industry values may either be skipped (creating orphaned accounts) or assigned to a default catch-all territory. If you have multiple catch-all rules, this creates duplicate assignments. Execute this diagnostic query to identify all problematic accounts:

List<Account> problematic = [SELECT Id, Name, Industry,
  AnnualRevenue FROM Account WHERE (Industry = null
  OR AnnualRevenue = null) AND IsActive__c = true];

For these accounts, implement a data cleanup strategy: populate missing Industry values using historical opportunity data, derive Annual Revenue from closed-won opportunity totals if the field is empty, or create a temporary ‘Unassigned’ territory specifically for accounts pending data completion.

Third, conduct sync error diagnostics through the activation log. Navigate to Setup > Territory Models > Your Model > Activation History. Click the failed activation record and download the detailed error log. This log identifies exactly which accounts are causing duplicate assignments and which specific assignment rules are conflicting. Common patterns include: accounts matching both a geographic rule and an industry rule at the same level, custom field values that changed between model creation and activation causing unexpected rule matches, or assignment rules referencing formula fields that return null intermittently.

For your parallel model scenario, verify that the new model’s territory hierarchy doesn’t share territory record IDs with the active model. Each model maintains separate territory records, but if you cloned the old model and modified it, residual territory associations might exist. Create the new model from scratch rather than cloning to avoid hidden dependencies.

Additionally, check for custom validation rules or triggers on the Account object that might interfere with territory assignment. Temporarily deactivate any automation that fires on Account updates during the model activation window. Territory sync performs bulk DML operations that can trigger unexpected validation failures if your custom rules aren’t designed for bulk processing.

Recommended activation sequence: First, complete the data cleanup for all accounts with null Industry or Annual Revenue values. Second, review and refactor assignment rules to ensure mutual exclusivity at each hierarchy level - use the rule tester tool with sample accounts to validate. Third, deactivate custom automation on Account object. Fourth, attempt activation in a sandbox environment first to validate the error log is clear. Finally, schedule production activation during a maintenance window with stakeholder communication.

This systematic approach addressing rule conflicts, data completeness, and sync diagnostics should resolve your activation failures and enable successful territory realignment.

Good point about the incomplete data. I’ll run that query and clean up the missing fields. But wouldn’t the assignment rules just skip accounts that don’t match the criteria rather than throw an integrity error?

Check your territory assignment rule order and the ‘Evaluate Next Rule’ settings. If multiple rules can match the same account and you haven’t properly configured the evaluation sequence, you’ll get duplicate assignments. Winter '25 added stricter validation for this during model activation.

I ran into this last quarter. The issue was incomplete account field data. You mentioned 98% and 95% coverage, but that 2-5% of accounts with missing data can block the entire activation. Territory assignment rules in Winter '25 are stricter about null values in filter criteria.

Run this check to identify problematic accounts:

List<Account> incomplete = [SELECT Id, Industry, AnnualRevenue
  FROM Account WHERE Industry = null OR AnnualRevenue = null];
System.debug('Accounts missing data: ' + incomplete.size());

Fix those accounts first, then retry activation.