DUPLICATE_VALUE bei Salesforce-Deployments beheben

Ein Datensatz oder eine Metadatenkomponente, der bzw. die erstellt wird, hat bereits einen übereinstimmenden eindeutigen Wert oder Developer Name in der Ziel-Org.

Tritt auf bei: sowohl DML-Inserts zur Laufzeit als auch Metadaten-Deployment-Validierung

Was das bedeutet

DUPLICATE_VALUE bedeutet, dass Salesforce einen Insert oder eine neue Metadatenkomponente abgelehnt hat, weil etwas daran, ein eindeutiger Feldwert, eine External ID oder ein Developer Name, in der Ziel-Org bereits existiert. Salesforce erzwingt Eindeutigkeit auf Plattformebene und überschreibt den vorhandenen Datensatz oder die Komponente nicht stillschweigend.

Es ist ein breiterer Sammelbegriff als DUPLICATE_DEVELOPER_NAME oder DUPLICATE_EXTERNAL_ID; das sind die zwei häufigsten spezifischen Varianten, aber dieser Code kann auch bei jedem Custom Field mit gesetztem Unique-Attribut auftreten.

Diagnose

Häufige Ursachen

Eindeutiges Feld bereits belegt
Ein als eindeutig markiertes Feld oder eine External ID hat in der Ziel-Org bereits einen übereinstimmenden Wert aus einem früheren Load oder Deployment.
Parallele Arbeit erzeugte denselben Developer Name
Zwei Entwickler haben unabhängig voneinander eine Komponente, ein Custom Field, einen Record Type oder ein Permission Set mit demselben Developer Name in separaten Branches erstellt.
Duplikatsregeln blockieren Testdaten
Eine Duplicate- oder Matching-Rule in der Ziel-Org markiert Apex-Testdaten als Duplikat eines vorhandenen Datensatzes.

Die Lösung

  1. Upsert statt Insert verwenden
    Verwenden Sie upsert mit dem richtigen External-ID-Feld, damit vorhandene Datensätze aktualisiert statt neu erstellt werden.
  2. Die kollidierende Komponente umbenennen
    Geben Sie der neueren Metadatenkomponente einen eindeutigen Developer Name und aktualisieren Sie alle Verweise darauf.
  3. Duplikatsregeln im Testkontext überprüfen
    Stellen Sie sicher, dass Duplicate- und Matching-Rules die spezifischen Datensatzformen, die Ihre Apex-Tests einfügen, nicht blockieren.
In der Praxis

Wie Serpent das verhindert

Serpent AI markiert überlappende Developer Names zwischen parallelen Tasks, bevor einer von beiden ein Deployment erreicht, sodass die Kollision bereits beim Scoping erkannt wird. Siehe die Bibliothek der Salesforce-Deploymentfehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Standardmäßig Upsert statt Insert verwenden, wo eine External ID existiert
Verwenden Sie upsert als Standardmuster für jedes Objekt mit einem stabilen externen Schlüssel, damit ein erneuter Lauf eines Loads nie mit sich selbst kollidiert.
Duplikatsregeln im Test-Setup bewusst umgehen, nicht versehentlich
Setzen Sie DMLOptions.DuplicateRuleHeader.allowSave explizit in Testdaten-Factories, die Datensätze einfügen müssen, die Duplicate Rules sonst markieren würden.
Namenskonventionen vor Beginn paralleler Feature-Arbeit vereinbaren
Legen Sie Developer-Name-Präfixe pro Team oder Feature bereits beim Kickoff fest, nicht erst, nachdem die erste Kollision eine gemeinsam genutzte Org erreicht.
Häufige Fragen

DUPLICATE_VALUE, beantwortet

Kann ich den vorhandenen Datensatz einfach löschen und erneut deployen?
Nur wenn er wirklich überflüssig ist. Prüfen Sie zuerst, was davon abhängt, da das Löschen des falschen Duplikats andere Metadaten brechen kann, die darauf verweisen.
Gilt DUPLICATE_VALUE nur für Custom Fields oder auch für Standardfelder?
Es gilt für beide. Standardmäßig eindeutige Felder, wie die E-Mail eines Contacts in manchen Org-Konfigurationen, erzwingen dieselbe Beschränkung wie ein Custom Field mit aktiviertem Unique.
Ist DUPLICATE_VALUE dasselbe wie eine Warnung einer Salesforce-Duplikatverwaltungsregel?
Nein. Duplicate- und Matching-Rules in Setup sind eine weichere, konfigurierbare Warnung oder Blockierung bei wahrscheinlichen Duplikaten; DUPLICATE_VALUE ist eine harte Eindeutigkeitsbeschränkung auf Plattformebene, die vom Benutzer in der UI nicht außer Kraft gesetzt werden kann.

Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.

In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.