Entscheidungsfindungsmigrations-API decisioning-migration-api

Auf dieser Seite: Verwenden Sie die Entscheidungsfindungsmigrations-API, um Entscheidungs-Management-Objekte mit automatisierter Abhängigkeitsanalyse und Rollback-Unterstützung zwischen Sandboxes zu verschieben, damit Sie Entscheidungsinhalte zwischen Umgebungen übertragen können, während die Datenintegrität erhalten bleibt.

Mit der Entscheidungsfindungsmigrations-API können Sie Entscheidungs-Management-Objekte von einer Sandbox in eine andere migrieren. Der Migrationsprozess wird in Form asynchroner Workflows ausgeführt, die Funktionen für Abhängigkeitsanalysen, Ausführung und optionales Rollback enthalten.

Mit dieser API können Sie Ihre Entscheidungs-Inhalte nahtlos zwischen Umgebungen übertragen und dabei Datenintegrität und -beziehungen beibehalten.

Weitere Informationen zu den Vorteilen und Funktionen von Entscheidungsfindung im Vergleich zum Entscheidungs-Management finden Sie auf dieser Seite.

Funktionen capabilities

Die Entscheidungsfindungsmigrations-API bietet die folgenden Funktionen:

  • Abhängigkeitsanalyse – Identifizieren Sie alle erforderlichen Abhängigkeiten zwischen Quell- und Ziel-Sandboxes, einschließlich Attributen, Segmenten und Datensatzanforderungen.
  • Flexibler Migrationsumfang – Führen Sie Migrationen je nach Bedarf auf Sandbox-, Angebots- oder Entscheidungsebene aus.
  • Rollback-Unterstützung – Setzen Sie eine abgeschlossene Migration zurück, wenn bei der Validierung Probleme auftreten.

Voraussetzungen prerequisites

Erforderliche Berechtigungen permissions

Um die Migrations-API verwenden zu können, benötigen Sie entsprechende Berechtigungen in der Quell- und Ziel-Sandbox:

Quell-Sandbox – Lesezugriff auf Entscheidungs-Management-Objekte

Ziel-Sandbox – Erstellungs- und Bearbeitungszugriff auf Entscheidungsfindungs-Objekte

Zu den typischen Berechtigungen gehören:

  • Verwalten/Anzeigen der Entscheidungsfindung
  • Verwalten/Anzeigen von Entscheidungen
  • Verwalten von Angeboten
  • Verwalten von Rangfolgestrategien
  • Verwalten von Kampagnen (bei Migration von kampagnenbezogenen Artefakten)
  • Verwalten/Anzeigen von Datenströmen (beim Erstellen eines Datenstroms)
  • Verwalten/Anzeigen von Schemata
NOTE
Informationen zum Zuweisen von Entscheidungsfindungs-Berechtigungen finden Sie in diesem Abschnitt. Eine vollständige Liste der Berechtigungen finden Sie auf der Seite Integrierte Berechtigungen.

Vorbereiten der Ziel-Sandbox target-sandbox-preparation

Bevor Sie eine Migration ausführen, stellen Sie sicher, dass Ihre Ziel-Sandbox ordnungsgemäß konfiguriert ist:

  • Attribute – Prüfen Sie, ob die erforderlichen Profilattribute und Kontextattribute in der Ziel-Sandbox vorhanden sind, oder bereiten Sie Zuordnungen für sie vor.
  • Segmente – Stellen Sie sicher, dass die erforderlichen Segmente in der Ziel-Sandbox vorhanden sind, oder planen Sie ihre Zuordnung mithilfe des Namespace und der ID.
  • Datensatz – Geben Sie einen Datensatznamen an, der für die Migration verwendet werden soll (dependency.datasetName).
  • Datenstrom – Legen Sie fest, ob bei der Migration ein Datenstrom erstellt werden soll (createDataStream).

Weitere Informationen zur Sandbox-Verwaltung finden Sie unter Verwenden und Zuweisen von Sandboxes.

NOTE
Die Ziel-Sandbox kann mit der Quell-Sandbox identisch sein. Der Migrationsprozess verarbeitet dieses Szenario und stellt die Datenintegrität sicher, unabhängig davon, ob Objekte innerhalb derselben Sandbox oder in eine andere Sandbox migriert werden.

Voraussetzungen für die Migration zwischen Sandboxes cross-sandbox-prerequisites

Wenn die Quell-Sandbox nicht mit der Ziel-Sandbox übereinstimmt, sind die folgenden Elemente erforderlich:

  • Profilattribute: Müssen in der Ziel-Sandbox vorhanden sein oder über vordefinierte Zuordnungen verfügen
  • Segment-IDs: Müssen in der Ziel-Sandbox vorab erstellt werden, einschließlich Zuordnungen von alten zu neuen IDs
  • Identitätszuordnung: Muss für eine konsistente Identitätsbestimmung konfiguriert sein

API-Grundlagen api-basics

Basis-URL base-url

Verwenden Sie die folgende Basis-URL:

  • Produktion: https://decisioning-migration.adobe.io

Authentifizierung authentication

Alle API-Anfragen erfordern die folgenden Header:

  • Authorization: Bearer <IMS_ACCESS_TOKEN>
  • x-gw-ims-org-id: <IMS_ORG_ID>
  • Content-Type: application/json

Detaillierte Anweisungen zum Einrichten der Authentifizierung finden Sie im Authentifizierungshandbuch für Journey Optimizer.

Migrations-Workflow migration-workflow

Der Migrationsprozess besteht aus zwei Hauptschritten: Analysieren von Abhängigkeiten und Ausführen der Migration. Führen Sie die folgenden Schritte aus, um eine erfolgreiche Migration sicherzustellen.

Schritt 1: Analysieren von Abhängigkeiten analyze-dependencies

Verwenden Sie vor der Migration den Abhängigkeits-Workflow, um zu ermitteln, was in Ihrer Ziel-Sandbox vom Entscheidungs-Management zur Entscheidungsfindung zugeordnet werden muss. Diese Analyse hilft Ihnen, die Beziehungen zwischen Objekten zu verstehen und die erforderlichen Zuordnungen vorzubereiten.

Erstellen eines Abhängigkeits-Workflows create-dependency-workflow

Verwenden Sie den folgenden API-Aufruf, um einen Workflow zur Abhängigkeitsanalyse zu erstellen.

API-Format

POST /workflows/generate-dependencies

Abhängigkeit auf Sandbox-Ebene (als erste Analyse empfohlen)

Beginnen Sie mit einer Analyse auf Sandbox-Ebene, um einen vollständigen Überblick über alle Abhängigkeiten zu erhalten:

curl --request POST \
  --url "https://decisioning-migration.adobe.io/workflows/generate-dependencies?request-level=sandbox" \
  --header "Authorization: Bearer <IMS_ACCESS_TOKEN>" \
  --header "x-gw-ims-org-id: <IMS_ORG_ID>" \
  --header "Content-Type: application/json" \
  --data '{
    "imsOrgId": "<IMS_ORG_ID>",
    "sourceSandboxDetails": { "sandboxName": "<SOURCE_SANDBOX_NAME>" },
    "targetSandboxDetails": { "sandboxName": "<TARGET_SANDBOX_NAME>" }
  }'

Abhängigkeit auf Angebotsebene

Um die Abhängigkeiten nur für bestimmte Angebote zu analysieren, rufen Sie denselben Endpunkt mit request-level=offer in der Abfragezeichenfolge auf und geben Sie im Hauptteil ein offersList-Array mit den Angebots-IDs an, die Sie analysieren möchten.

Abhängigkeit auf Entscheidungsebene

Um die Abhängigkeiten nur für bestimmte Entscheidungen zu analysieren, verwenden Sie request-level=decision in der Abfragezeichenfolge und stellen Sie im Hauptteil ein decisionsList-Array mit den Entscheidungs-IDs bereit, die Sie analysieren möchten.

Prüfen des Status des Abhängigkeits-Workflows poll-dependency-status

Fragen Sie den Abhängigkeits-Workflow ab, um zu prüfen, wann die Analyse abgeschlossen ist.

API-Format

GET /workflows/generate-dependencies/{id}

Anfrage

curl --request GET \
  --url "https://decisioning-migration.adobe.io/workflows/generate-dependencies/<WORKFLOW_ID>" \
  --header "Authorization: Bearer <IMS_ACCESS_TOKEN>" \
  --header "x-gw-ims-org-id: <IMS_ORG_ID>"

Wenn das Feld status den Wert Completed anzeigt, ist die Abhängigkeitsanalyse bereit. Verwenden Sie die Workflow-Ausgabe, um Ihre Zuordnungen von Migrationsabhängigkeiten zu erstellen:

  • profileAttributes – Ordnet Quellprofilattribute Zielprofilattributen zu
  • contextAttributes – Ordnet Quellkontextattribute Zielkontextattributen zu
  • segments – Ordnet jeden Quellsegmentschlüssel einer Zielsegmentkennung ({namespace, id}) zu
  • datasetName – Der für die Migration verwendete Zieldatensatz des Erlebnisereignisses. Er muss mit einem Datenstrom verknüpft sein, der für Aufrufe von Journey Optimizer Edge (Web SDK) aktiviert ist; sein Schema wird verwendet, um die migrierten Kontextattribute hinzuzufügen.

Sie stellen diese Zuordnungen im Objekt dependency der Migrationsanfrage in Schritt 2 bereit.

Schritt 2: Ausführen der Migration execute-migration

Nachdem Sie die Abhängigkeiten analysiert und die Zuordnungen vorbereitet haben, können Sie die Migration ausführen.

Erstellen eines Migrations-Workflows create-migration-workflow

Verwenden Sie die Abhängigkeitszuordnungen aus Schritt 1, um Ihre Migration zu konfigurieren und auszuführen.

API-Format

POST /workflows/migration

Migration auf Sandbox-Ebene

So migrieren Sie alle Entscheidungsfindungs-Objekte von einer Sandbox in eine andere:

curl --request POST \
  --url 'https://decisioning-migration.adobe.io/workflows/migration?request-level=sandbox' \
  --header 'Authorization: Bearer <IMS_ACCESS_TOKEN>' \
  --header 'Content-Type: application/json' \
  --header 'x-gw-ims-org-id: <IMS_ORG_ID>' \
  --data '{
    "imsOrgId": "<IMS_ORG_ID>",
    "sourceSandboxDetails": { "sandboxName": "<SOURCE_SANDBOX_NAME>" },
    "targetSandboxDetails": { "sandboxName": "<TARGET_SANDBOX_NAME>" },
    "createDataStream": true,
    "dependency": {
      "profileAttributes": {
        "sourceAttr1": "targetAttr1"
      },
      "segments": {
        "sourceSegmentKey1": {
          "namespace": "<TARGET_SEGMENT_NAMESPACE>",
          "id": "<TARGET_SEGMENT_ID>"
        }
      },
      "contextAttributes": {
        "sourceCtx1": "targetCtx1"
      },
      "datasetName": "<TARGET_DATASET_NAME>"
    }
  }'

Migration auf Angebotsebene

Um nur bestimmte Angebote zu migrieren, verwenden Sie request-level=offer in der Abfragezeichenfolge und fügen Sie dem Hauptteil ein offersList-Array hinzu:

"offersList": ["offer-id-1", "offer-id-2"]

Migration auf Entscheidungsfindungs-Ebene

Um nur bestimmte Entscheidungen zu migrieren, verwenden Sie request-level=decision in der Abfragezeichenfolge und fügen Sie dem Hauptteil ein decisionsList-Array hinzu:

"decisionsList": ["decision-id-1", "decision-id-2"]

Anfragefelder

  • request-level (Abfrage) – Migrationsumfang: sandbox, offer oder decision.
  • imsOrgId (erforderlich) – Ihre IMS-Organisations-ID.
  • sourceSandboxDetails.sandboxName (erforderlich) – Quell-Sandbox, die die Entitäten des Entscheidungs-Managements enthält.
  • targetSandboxDetails.sandboxName (erforderlich) – Ziel-Sandbox, in der die Entscheidungsentitäten erstellt werden.
  • dependency.datasetName (erforderlich): Zieldatensatz des Erlebnisereignisses. Er muss mit einem Datenstrom verknüpft sein, der für Aufrufe von Journey Optimizer Edge (Web SDK) aktiviert ist; sein Schema wird verwendet, um die migrierten Kontextattribute hinzuzufügen.
  • createDataStream – true erstellt einen neuen, für Journey Optimizer aktivierten Datenstrom; false verwendet den bereits mit dem Datensatz in dependency.datasetName verknüpften Datenstrom wieder.
  • dependency.profileAttributes – Zuordnung von Quell- zu Zielprofilattributen.
  • dependency.contextAttributes – Zuordnung von Quell- zu Zielkontextattributen.
  • dependency.segments – Zuordnung von Quellsegment-Schlüsseln zu Zielsegmenten ({namespace, id}).
  • offersList[] / decisionsList[] – Die zu migrierenden Angebots- oder Entscheidungs-IDs; erforderlich, wenn request-level jeweils offer oder decision ist.

Überwachen des Migrationsstatus poll-migration-status

Fragen Sie den Status des Migrations-Workflows ab, um seinen Fortschritt nachzuverfolgen.

API-Format

GET /workflows/migration/{id}

Anfrage

curl --request GET \
  --url "https://decisioning-migration.adobe.io/workflows/migration/<WORKFLOW_ID>" \
  --header "Authorization: Bearer <IMS_ACCESS_TOKEN>" \
  --header "x-gw-ims-org-id: <IMS_ORG_ID>"

Migrationsergebnisse

Wenn das Feld status den Wert Completed anzeigt, war die Migration erfolgreich. Der Workflow result umfasst die folgenden Elemente:

  • Zuordnungen von migrierten Objekten
  • Etwaige Warnungen während der Migration

Wenn das Feld status den Wert Failed anzeigt, prüfen Sie das errors[]-Array und das Feld result.error auf Details zu den Problemen.

Jeder Workflow (Abhängigkeit, Migration und Rollback) gibt dieselben Ressourcenfelder zurück:

  • id – Workflow-Kennung (UUID); fragen Sie den Status mit dem entsprechenden GET /{id} ab.
  • status – Lebenszyklusstatus: New, Running, Completed oder Failed.
  • result – Vorhanden bei Completed; die Ausgabe des Workflows (z. B. Zuordnungen migrierter Objekte und etwaige Warnhinweise).
  • errors[] – Vorhanden bei Failed; strukturierte Fehlerdetails (siehe auch result.error).
  • _links.self – URL der Workflow-Ressource.

Validieren der Migration validate-migration

Prüfen Sie nach erfolgreichem Abschluss der Migration, ob alle Objekte korrekt migriert wurden.

Validierungs-Checkliste validation-checklist

  1. Segmente – Prüfen Sie, ob alle referenzierten Segmente in der Ziel-Sandbox entsprechend Ihren Zuordnungen korrekt aufgelöst werden.

  2. Attribute – Vergewissern Sie sich, dass alle Profilattribute und Kontextattribute in der Ziel-Sandbox vorhanden sind und korrekt zugeordnet werden.

  3. Entscheidungsfindungs-Objekte – Prüfen Sie migrierte Objekte in der Benutzeroberfläche von Journey Optimizer:

    • Angebote (Entscheidungselemente)
    • Eignungsregeln
    • Rangfolgenformeln
    • Auswahlstrategien
    • Entscheidungsrichtlinien
  4. Datenstromtests – Wenn ein Datenstrom erstellt wurde, testen Sie die Laufzeitbereitstellung mithilfe der Edge Interact API.

Beispiel test-runtime-delivery

Wenn bei der Migration ein Datenstrom erstellt wurde, können Sie die Angebotsbereitstellung anhand des folgenden Beispiels testen:

curl --request POST \
  --url "https://edge.adobedc.net/ee/or2/v1/interact?configId=<DATASTREAM_ID>" \
  --header "Content-Type: application/json" \
  --header "x-request-id: <uuid>" \
  --data '{ "events": [ ... ] }'

Rollback einer Migration rollback

Wenn Sie während der Validierung Probleme feststellen, können Sie eine abgeschlossene Migration zurücksetzen, um den vorherigen Status der Ziel-Sandbox wiederherzustellen.

Erstellen eines Rollback-Workflows create-rollback-workflow

Starten Sie ein Rollback, indem Sie einen Rollback-Workflow erstellen, der auf die Migration verweist, die Sie zurücksetzen möchten.

API-Format

POST /workflows/rollback

Anfrage

curl --request POST \
  --url "https://decisioning-migration.adobe.io/workflows/rollback" \
  --header "Authorization: Bearer <IMS_ACCESS_TOKEN>" \
  --header "x-gw-ims-org-id: <IMS_ORG_ID>" \
  --header "Content-Type: application/json" \
  --data '{ "rollbackWorkflowId": "<MIGRATION_WORKFLOW_ID>" }'

Ersetzen Sie <MIGRATION_WORKFLOW_ID> durch die ID des Migrations-Workflows, den Sie zurücksetzen möchten.

Überwachen des Rollback-Status poll-rollback-status

Fragen Sie den Rollback-Workflow ab, um seinen Fortschritt nachzuverfolgen.

API-Format

GET /workflows/rollback/{rollbackWorkflowId}

Anfrage

curl --request GET \
  --url "https://decisioning-migration.adobe.io/workflows/rollback/<ROLLBACK_WORKFLOW_ID>" \
  --header "Authorization: Bearer <IMS_ACCESS_TOKEN>" \
  --header "x-gw-ims-org-id: <IMS_ORG_ID>"

Bearbeitung gleichzeitiger Workflows handle-concurrency

Mit der Migrations-API kann jeweils nur ein Workflow pro Organisation ausgeführt werden. Wenn Sie versuchen, einen neuen Workflow zu erstellen, während ein anderer ausgeführt wird, erhalten Sie eine Fehlerantwort 409 Conflict („Ein Workflow ist bereits in Bearbeitung …“).

Warten Sie in diesem Fall, bis der laufende Workflow abgeschlossen ist, oder rufen Sie die Workflow-ID ab und fragen Sie den Status ab. Sobald der aktuelle Workflow abgeschlossen ist, können Sie einen neuen erstellen.

Migrationsumfang und -abdeckung migration-scope

Wenn Sie den Umfang der Migration verstehen, können Sie den Übergang vom Entscheidungs-Management zur Entscheidungsfindung planen und validieren. In diesem Abschnitt wird beschrieben, was vom Migrationsprozess abgedeckt wird und was ein manuelles Eingreifen erfordert.

Im Umfang: Das wird abgedeckt in-scope

Die Migrations-API verarbeitet die folgenden Elemente und Funktionen:

  • Anwendungsfälle – Nur Anwendungsfälle für eingehende/Edge-Entscheidungen sind im Umfang enthalten. Ausgehende oder OD bei der Migration des Journey Optimizer-E-Mail-Kanals werden unterstützt, müssen jedoch manuell aktualisiert werden.
  • Code-basierte Erlebniskampagnen – Werden während der Migration automatisch erstellt und umfassen eine Kampagne pro migriertem Entscheidungsumfang in Ihrer Ziel-Sandbox.
  • Kanalkonfiguration/-oberfläche – Kanalkonfigurationen/-oberflächen, die pro Platzierung im Entscheidungs-Management erstellt wurden, um ein ordnungsgemäßes Routing von Entscheidungsantworten sicherzustellen.
  • Angebotsinhaltstypen – Angebote werden nur migriert, wenn ihr Inhaltstyp JSON oder Text ist. Andere Inhaltstypen erfordern eine manuelle Neuerstellung.
  • Angebotsmerkmale – Bleiben im Schema „Personalisierte Angebotselemente – Erlebnis-Entscheidung“ in der Feldergruppe offer_item_custom_attributes erhalten, benutzerdefinierte Metadaten werden übernommen.
  • Kontextattribute – Werden dem Erlebnisereignisschema in der Feldergruppe custom_context_attributes hinzugefügt, um Tracking und Personalisierung durchzuführen.
  • Entscheidungsumfänge – Ein Entscheidungsumfang aus dem Entscheidungs-Management wird in der Entscheidungsfindung einer Auswahlstrategie + einer Entscheidungsrichtlinie + einer Kampagne zugeordnet, um eine ordnungsgemäße Entitätshierarchie sicherzustellen.
  • Nur-API-Eignungsregeln – Eignungsregeln, die nur über die API (nicht in der Entscheidungs-Management-Benutzeroberfläche) erstellt wurden, werden migriert und bleiben in der Entscheidungsfindung nur für die API verfügbar. Über die Benutzeroberfläche erstellte Regeln werden ebenfalls migriert.

Außerhalb des Geltungsbereichs: Das wird nicht abgedeckt oder erfordert manuelle Maßnahmen out-of-scope

Die folgenden Elemente erfordern manuelle Aktionen oder werden vom Migrations-Tool nicht unterstützt:

  • Entscheidungs-Platzierungen – Vom Migrations-Tool werden keine Platzierungen erstellt. Sie müssen diese vor oder nach der Migration basierend auf Ihrer Architektur manuell in der Entscheidungsfindung erstellen.
  • Begrenzung auf Platzierungsebene – Die Frequenzbegrenzung auf Platzierungsebene wird nicht migriert.
  • Nicht-JSON-/Text-Angebotsinhalte – Angebote mit anderen Inhaltstypen als JSON oder Text (z. B. HTML, Bilder) werden NICHT migriert und erfordern eine manuelle Neuerstellung in der Entscheidungsfindung.
  • Profilattribute und Segmente – Profilattribute und Segmentzugehörigkeiten werden von Migrations-Tools NIE erstellt oder bearbeitet. Diese müssen bereits in der Ziel-Sandbox vorhanden sein, bevor die Migration ausgeführt wird.
  • Segment-ID-Zuordnung – Segment-IDs müssen in der Ziel-Sandbox vorab erstellt werden. Für die Segmentauflösung müssen Sie in der Migrations-API-Anfrage eine ID-Zuordnung alt→neu angeben.
  • Änderungen am Datenerfassungs-Code – Client- und Server-seitige Änderungen am Ereignis-Tracking-Code werden NICHT automatisiert. Ihr Implementierungs-Team muss die Ereigniserfassung aktualisieren, damit Entscheidungsanfrage-/-antwortformate und Entscheidungsereignisschemata verwendet werden.

Entitätszuordnungsreferenz entity-mapping

Bei der Migration vom Entscheidungs-Management zur Entscheidungsfindung werden Entitäten entsprechend der folgenden Tabelle zugeordnet. Die Zuordnungen umfassen die primären Entscheidungsentitäten und zusätzliche verknüpfte Entitäten, die während der Migration erstellt oder verwendet wurden.

Zuordnung von Entscheidungsentitäten zwischen Entscheidungs-Management und Entscheidungsfindung

Entscheidungs-Management-Entität
Entscheidungsfindungsentität
Zusätzliche Entitäten
Entscheidung
Auswahlstrategie
Artikelsammlung, Eignungsregel, Rangfolgenformel
Entscheidungsrichtlinie
Artikelanzahl, Auswahlstrategien, Fallback-Angebotselement
Code-basierte Erlebniskampagne
Entscheidungsrichtlinie, Inhalt, Kanalkonfiguration, Journey Optimizer-Fragmente
Platzierung
Kanalkonfiguration
—
Sammlung
Elementsammlung
Einheitliche Tags, Angebotselemente
Sammlungsqualifizierer
Einheitliche Tags
—
Regel
Entscheidungsregel
—
Rangfolgenformel
Entscheidungsfindung – Rangfolgenformel
—
Angebot
Angebotselement
Eignungsregel, Journey Optimizer-Fragmente, einheitliche Tags, Frequenzbegrenzung
Schema des Angebotselements
—
Journey Optimizer-Fragmente
—

Namenskonventionen

Der Migrationsprozess wendet Benennungskonventionen mit dem Präfix ExD_ an, um Konsistenz zu gewährleisten und Benennungskonflikte zu vermeiden.

Quellobjekt
Entscheidungs-Management – Namensmuster
Entscheidungsfindung – Namensmuster
Angebot
<offerName>
ExD_<offerName>
Eignungsregel
<ruleName>
ExD_<ruleName>
Rangfolgenformel
<formulaName>
ExD_<formulaName>
Sammlung
<collectionName>
ExD_<collectionName>_<placementName>
Entscheidung → Auswahlstrategie
<decisionName>
ExD_<decisionName>_selection_strategy_<index>
Entscheidung → Entscheidungsrichtlinie
<decisionName>
ExD_<decisionName>_<placementName>
Journey Optimizer-Fragment
<offerName>
ExD_<offerName>_<placementName>_<index>
Platzierung → Oberfläche
<placementName>
ExD_<placementName> (Leerzeichen/Punkte werden in Unterstriche konvertiert)
Einheitliches Tag
<sourceName>, <targetName>
ExDMigration_<sourceName>_<targetName>
CBE-Kampagne
<decisionName>, <placementName>
Campaign for <decisionName> : <placementName>

Zusätzliche Attribute

Quellattribut
Zielspeicherort
Angebotsattribute
Feld „migratedofferattributes“ im Schema „Personalisiertes Angebotselement“
Kontextattribute
Feld „migratedcontextattributes“ im Schema, das an den während der Migration bereitgestellten Datensatz angehängt ist

Anfrage- und Antwortmodell request-response-model

Bei der Migration vom Entscheidungs-Management zur Entscheidungsfindung muss Ihr Anwendungs-Code aktualisiert werden, damit die neuen Anfrage- und Antwortformate verwendet werden. Beide Systeme verwenden den Edge Network-Endpunkt, jedoch mit unterschiedlichen Payload-Strukturen und Feldnamen.

Entscheidungs-Management – Edge-Anfrage (aktuell) dm-request

Die aktuelle Edge-Anfrage beim Entscheidungs-Management folgt dieser Struktur:

Endpunkt:

POST https://edge.adobedc.net/ee/v2/interact

Kopfzeilen:

  • Authorization: Bearer <IMS_ACCESS_TOKEN>
  • x-api-key: <API_KEY> (aus Developer Console)
  • x-gw-ims-org-id: <IMS_ORG_ID> (Format: {ORG_ID}@AdobeOrg)
  • x-request-id: <UNIQUE_REQUEST_ID> (für Tracking und Deduplizierung)
  • Content-Type: application/vnd.adobe.xdm+json; schema="…/decision-request;version=1.0"
  • Accept: application/vnd.adobe.xdm+json; schema="…/decision-response;version=1.0"
  • x-sandbox-name: <SANDBOX_NAME> (z. B. prod, dev)

Parameter des Anfragetexts:

  • xdm:dryRun (wahr/falsch) – Testanfragen ohne Verunreinigung der Berichte

  • xdm:propositionRequests[] – Array von Entscheidungsanfragen:

    • activityId – Kennung der Entscheidungsaktivität
    • placementId – Platzierungskennung
    • itemCount – Maximale Anzahl der zurückzugebenden Angebote
  • xdm:profiles[].xdm:identityMap – Identitätszuordnung (E-Mail, ECID usw.)

  • xdm:validateContextData – Markierung für strikte Kontextdatenvalidierung

  • xdm:responseFormat.xdm:includeContent – Tatsächliche Inhalte einbeziehen anstelle von reinen IDs

Beispiel für einen Anfragetext:

{
  "xdm": {
    "dryRun": false,
    "propositionRequests": [
      { "activityId": "<ACTIVITY_ID>", "placementId": "<PLACEMENT_ID>", "itemCount": 3 }
    ],
    "profiles": [
      { "identityMap": { "ECID": [ { "id": "<ECID>", "primary": true } ] } }
    ],
    "validateContextData": true,
    "responseFormat": { "includeContent": true }
  }
}
NOTE
Die vollständige Referenz zu Anfragen und Antworten für das Entscheidungs-Management (OD) finden Sie unter Edge Decisioning API (die Web SDK-/Edge-Variante, die Base64-codierte decisionScopes mit activityId und placementId verwendet).

Entscheidungsfindung – Edge-Anfrage (nach der Migration) decisioning-request

Verwenden Sie nach der Migration das Format für Entscheidungsanfragen über denselben Edge Network-Endpunkt.

Endpunkt:

POST https://edge.adobedc.net/ee/v2/interact

Wichtigste Anfragefelder:

  • query.identity.fetch – Array von aufzulösenden Identitätstypen (z. B. ["ECID"])
  • event.xdm.environment.type – Umgebungstyp: "browser", "app" oder "server"
  • event.xdm.environment.browserDetails – Browser-Metadaten (viewportWidth, viewportHeight, userAgent)
  • event.xdm.identityMap – Dieselbe Identitätszuordnung wie beim Entscheidungs-Management
  • event.xdm.timestamp – ISO 8601-Zeitstempel
  • query.personalization.surfaces – Array von Zieloberflächen (z. B. ["web://site.com/homepage"]) – ersetzt decisionScope
  • query.personalization.schemas – Zurückzugebende Inhaltsschemata (z. B. ["json-content-item", "html-content-item"])
  • data.__adobe.ajo.allowDuplicateDecisionItems – Deduplizierungssteuerung (Standardwert ist true; setzen Sie false, damit ein Element, das sich für mehrere Oberflächen qualifiziert, nur einmal zurückgegeben wird, während die anderen Oberflächen ein Fallback-/leeres Element erhalten). Ersetzt allowDuplicatePropositions beim Entscheidungs-Management.
  • data.__adobe.ajo.dryRun – Testmarkierung; unterdrückt Feedback-Ereignisse sowohl für Reporting als auch für Begrenzungszähler. Ersetzt xdm:dryRun beim Entscheidungs-Management. Vor der Produktion entfernen.

Beispiel für einen Anfragetext (Server-seitig):

{
  "events": [
    {
      "query": {
        "identity": { "fetch": ["ECID"] },
        "personalization": {
          "surfaces": ["web://my-web/IP_NLI_HP_GET_LOAN_WIDGET"],
          "schemas": [
            "https://ns.adobe.com/personalization/json-content-item",
            "https://ns.adobe.com/personalization/html-content-item"
          ]
        }
      },
      "xdm": {
        "eventType": "decisioning.propositionFetch",
        "environment": {
          "type": "browser",
          "browserDetails": { "viewportWidth": 1280, "viewportHeight": 900, "userAgent": "<USER_AGENT>" }
        },
        "identityMap": {
          "ECID": [ { "id": "<ECID>", "authenticatedState": "ambiguous", "primary": true } ]
        },
        "timestamp": "2025-09-08T12:00:00.000Z"
      },
      "data": {
        "__adobe": { "ajo": { "allowDuplicateDecisionItems": false } }
      }
    }
  ],
  "meta": {
    "state": {
      "domain": "my-web",
      "cookiesEnabled": true,
      "entries": [
        { "key": "kndctr_<ORG>_AdobeOrg_identity", "value": "<identity-cookie>" },
        { "key": "kndctr_<ORG>_AdobeOrg_cluster", "value": "<cluster-cookie>" }
      ]
    }
  }
}
NOTE
Die vollständige Referenz zur Entscheidungsfindung über das Web SDK/Edge in Journey Optimizer finden Sie unter Code-basiertes Erlebnis: Implementierungen der Entscheidungsfindung.

Entscheidungsfindung – Edge-Antwort decisioning-response

Die Antwort der Entscheidungsfindung enthält mehrere Handles, die nach Zuständigkeitsbereich gegliedert sind: personalization:decisions (die Angebote), locationHint:result und state:store (die beizubehaltenden Cookies).

Antwortstruktur:

{
  "requestId": "<REQUEST_ID>",
  "handle": [
    {
      "type": "personalization:decisions",
      "eventIndex": 0,
      "payload": [
        {
          "id": "103ae599-e6d8-4631-baf3-51dd8c6ed4c1",
          "scope": "web://my-web/IP_NLI_HP_GET_LOAN_WIDGET",
          "scopeDetails": {
            "decisionProvider": "AJO",
            "correlationID": "<CORRELATION_ID>",
            "characteristics": {
              "eventToken": "<base64 message-level event token>",
              "subPropositions": "<base64-encoded array of decision items>"
            },
            "rank": 1,
            "activity": {
              "id": "<campaignId>#<actionId>",
              "priority": 0,
              "matchedSurfaces": ["web://my-web/IP_NLI_HP_GET_LOAN_WIDGET"]
            }
          },
          "items": [
            {
              "id": "36646bab-af1b-44c6-b632-bbfb9c357919",
              "schema": "https://ns.adobe.com/personalization/json-content-item",
              "data": { "content": "{ ...offer JSON... }" }
            }
          ]
        }
      ]
    },
    {
      "type": "locationHint:result",
      "payload": [
        { "scope": "EdgeNetwork", "hint": "ind1", "ttlSeconds": 1800 }
      ]
    },
    {
      "type": "state:store",
      "payload": [
        { "key": "kndctr_<ORG>_AdobeOrg_cluster", "value": "<cluster-cookie>", "maxAge": 1800 },
        { "key": "kndctr_<ORG>_AdobeOrg_identity", "value": "<identity-cookie>", "maxAge": 34128000 }
      ]
    }
  ]
}

Wichtigste Anfragefelder:

  • handle[].type – Handle-Typ (personalization:decisions, locationHint:result, state:store)
  • payload[].id – Eindeutige Instanz-ID des Vorschlags – bei Anzeige-/Interaktionsereignissen zurückgeben
  • payload[].scope – Oberflächen-URI, für die der Vorschlag aufgelöst wurde
  • payload[].scopeDetails.decisionProvider – Bestätigt, dass die Engine AJO ist
  • payload[].scopeDetails.correlationID – Verknüpft die Entscheidungsinstanz mit dem Bereitstellungsereignis
  • payload[].scopeDetails.rank/payload[].scopeDetails.activity – Rang und Kampagnen-/Aktionsmetadaten für den Vorschlag
  • payload[].scopeDetails.characteristics.eventToken – Tracking-Token auf Nachrichtenebene
  • payload[].scopeDetails.characteristics.subPropositions – Base64-codiertes Array der Entscheidungselemente; jedes Element enthält ein eigenes elementspezifisches token. Diese elementspezifischen Token werden bei Anzeige-/Interaktionsereignissen in propositionAction.tokens übergeben
  • payload[].items[].schema/payload[].items[].data.content – Inhaltsschema und tatsächlicher Angebotsinhalt (JSON/HTML) für das Rendering
  • Payload von state:store – Die Identitäts- und Cluster-Cookies, die bei nachfolgenden Anfragen beizubehalten und weiterzuleiten sind (Server-seitig)

Die Base64-Decodierung der Zeichenfolge characteristics.subPropositions ergibt das Array der bereitgestellten Elemente, jeweils mit dem zugehörigen elementspezifischen token:

[
  {
    "id": "1ae75277-8832-4c23-bbbc-09f01cfe6c8b",
    "scope": "web://my-web/IP_NLI_HP_GET_LOAN_WIDGET",
    "scopeDetails": { "decisionProvider": "EXD", "correlationID": "<CORRELATION_ID>-0", "rank": 1 },
    "items": [
      { "id": "dps:<schema>:1be64ff83a612488", "name": "ExD_Personal Loan Offer", "score": 997.0, "token": "CLaefQnVLcLbCtzEXV3Jeg" },
      { "id": "dps:<schema>:1be6516838e1248c", "name": "ExD_Home Loan Offer",     "score": 995.0, "token": "ALlB5KV1B0e+CpHoahi7Ew" },
      { "id": "dps:<schema>:1be650da3cd06e98", "name": "ExD_Auto Loan Offer",     "score": 994.0, "token": "koJTRQcwFkR92AqbZ88ytQ" },
      { "id": "dps:<schema>:1be65612d5a1248d", "name": "ExD_Fallback Offer",      "itemSelection": { "selectionDetail": { "selectionType": "fallback" } }, "token": "GHo4ow7h6iCzBOhYR1+6jg" }
    ]
  }
]

Implementierungsmuster implementation-patterns

Die Entscheidungsfindung unterstützt drei Implementierungsansätze:

Client-seitige Implementierung (Web SDK/Mobile SDK) client-side

Das Web SDK oder Mobile SDK wickelt alle Anfragen und das Cookie-Management automatisch ab. Das SDK speichert und übermittelt sowohl Identitäts- als auch Cluster-Cookies bei jeder Anfrage.

Cookie-Verwaltung: Automatisch – Das Web SDK verwaltet die Cookies kndctr_<OrgId>_identity und kndctr_<OrgId>_cluster.

Server-seitige Implementierung (Edge Network-API) server-side

Der Anwendungs-Server sendet POST-Anfragen direkt an das Edge Network und muss die Weiterleitung von Cookies manuell verwalten. Der Server extrahiert Browser-Cookies aus eingehenden Anfragen und leitet sie über meta.state.entries[] an Edge Network weiter. Anschließend gibt er Cookies in der Antwort zurück.

Handhabung von Cookies: Manuell – Der Anwendungs-Server muss Cookies aus der Browser-Anfrage extrahieren, im Anfragetext an Edge Network weiterleiten und in der Antwort festlegen. Cookies müssen explizit in meta.state.entries weitergeleitet werden, um eine konsistente Identität zu gewährleisten.

Hybridimplementierung hybrid

Kombiniert Server-seitiges Rendern (erstes Laden der Seite) mit Client-seitigem SDK (nachfolgende Interaktionen). Der Server rendert den anfänglichen Inhalt über Edge Network, dann übernimmt Web SDK für nachfolgende Personalisierungsanfragen.

Behandlung von Cookies: Gemischt – Server-seitig ist eine manuelle Weiterleitung von Cookies an Edge Network erforderlich; Client-seitig erfolgt die Verarbeitung automatisch durch Web SDK. Stellen Sie sicher, dass Identitäts-Token vom Server-seitigen Rendern für Client-seitiges SDK verfügbar sind, um eine konsistente Identitätsauflösung zu gewährleisten.

Ereignisnachverfolgung und Datenerfassung event-tracking

Um Entscheidungsergebnisse ordnungsgemäß zuzuordnen, Frequenzbegrenzung zu aktivieren und die KI-basierte Rangfolgenoptimierung zu ermöglichen, müssen Sie die Ereignisnachverfolgung mit dem Entscheidungsfindungs-Ereignisschema implementieren.

Erforderliche Ereignisfelder event-fields

Sowohl eventType als auch _experience.decisioning.propositionEventType sind erforderlich. Wenn eines von beiden fehlt, wird der entsprechende Anzeige-/Interaktionszähler nicht hochgezählt.

  • eventType – Gibt die Ereigniskategorie an:

    • decisioning.propositionDisplay – Impression-Ereignis (Angebot wird Benutzenden angezeigt)
    • decisioning.propositionInteract – Interaktionsereignis (Benutzende haben auf das Angebot geklickt oder mit ihm interagiert)
  • _experience.decisioning.propositionEventType – Markiert den Ereignis-Untertyp. Schließen Sie genau einen auf 1 gesetzten Ereignistyp-Schlüssel ein (jeder Wert ist 1 oder 0; stellen Sie im selben Objekt nicht mehrere Ereignistypen auf 1 ein):

    • { "display": 1 } – Impression-Ereignis
    • { "interact": 1 } – Interaktionsereignis
    • Wenn alle display/interact/dismiss auf 0 gesetzt sind oder eventType ein anderer Wert als decisioning.proposition<Display|Interact|Dismiss> ist, wird das Ereignis als benutzerspezifisches Ereignis behandelt.
  • _experience.decisioning.propositionAction.tokens[] – Token pro Element zur Identifikation der bereitgestellten Elemente, für die der Zähler erhöht werden soll:

    • Kopieren Sie die token jedes Elements aus dem decodierten subPropositions-Array – nicht scopeDetails.characteristics.eventToken, da es sich um ein anderes Token auf Nachrichtenebene handelt.
    • Übergeben Sie das Token ohne Änderung genau so, wie es empfangen wurde.
    • Interaktionsereignisse: Stellen Sie genau ein Token bereit (das angeklickte Element).
    • Anzeigeereignisse: Optional – Geben Sie Token an, um bestimmte Elemente zu erhöhen, oder lassen Sie tokens weg, um den Zähler für alle Elemente in subPropositions zu erhöhen.
  • _experience.decisioning.propositions[] – Gibt die bereitgestellten Vorschläge zurück, einschließlich id, scope und der vollständigen scopeDetails aus der Antwort (die characteristics.subPropositions enthält und decisionProvider erfordert). Sie müssen kein explizites items[]-Array erstellen.

Schemaanforderungen schema-requirements

Verknüpfen Sie die Entscheidungsfindungs-Feldergruppe vor der Migration mit Ihrem Ereignis-Datensatzschema:

  1. Öffnen Sie in Experience Platform Ihr Ereignis-Datensatzschema

  2. Fügen Sie die Feldergruppe Experience Event - Proposition Details hinzu

  3. Stellen Sie sicher, dass die folgenden Felder zugeordnet sind:

    • _experience.decisioning.*-Felder
    • _experience.decisioning.propositionAction.tokens
    • _experience.decisioning.propositionEventType

Verarbeitung von Tracking-Token tracking-token

Das Tracking-Token muss gemäß den folgenden Anforderungen verarbeitet werden:

  • Token pro Element bestimmt die Zähler – Die Werte in propositionAction.tokens sind die token jedes bereitgestellten Elements von subPropositions, nicht die characteristics.eventToken auf Nachrichtenebene.
  • Interaktionsereignisse – Geben Sie genau ein Token an (das angeklickte Element).
  • Anzeigeereignisse – Token sind optional. Lassen Sie sie aus, um alle Elemente in subPropositions zu erhöhen, oder bestimmte Token angeben, um nur diese Elemente zu erhöhen.
  • Ändern Sie das Token nicht – Übergeben Sie den Wert genau so, wie er empfangen wurde. Er darf nicht codiert, geparst oder verändert werden.

Beispiele für Entscheidungsfindungs-Ereignisse event-examples

Jedes Beispiel spiegelt den bereitgestellten Vorschlag wider (einschließlich seiner scopeDetails, mit characteristics.subPropositions) und legt sowohl eventType als auch propositionEventType fest. Die Zähler erhöhen sich für die Elemente in subPropositions; propositionAction.tokens wählt die Elemente aus.

Anzeigeereignisse

Anzeigeereignisse benachrichtigen die Entscheidungsfindung, wenn einer Person ein Angebot angezeigt wird. Geben Sie die Token der angezeigten Elemente an oder lassen Sie die tokens aus, um den Anzeigenzähler für alle Elemente in subPropositions zu erhöhen:

{
  "header": {
    "imsOrgId": "YOUR_ORG_ID",
    "sandboxId": "sandbox-id",
    "sandboxName": "sandbox-name",
    "source": { "name": "ajo-inbound" }
  },
  "body": {
    "xdmEntity": {
      "identityMap": {
        "ECID": [ { "id": "ecid-123", "primary": true } ]
      },
      "eventType": "decisioning.propositionDisplay",
      "_experience": {
        "decisioning": {
          "propositionEventType": { "display": 1 },
          "propositionAction": {
            "id": "b96f842b-5dd9-4c55-9dae-647d96250028",
            "tokens": ["CLaefQnVLcLbCtzEXV3Jeg", "ALlB5KV1B0e+CpHoahi7Ew"]
          },
          "propositions": [
            {
              "id": "103ae599-e6d8-4631-baf3-51dd8c6ed4c1",
              "scope": "web://my-web/IP_NLI_HP_GET_LOAN_WIDGET",
              "scopeDetails": {
                "decisionProvider": "AJO",
                "characteristics": {
                  "eventToken": "<base64 eventToken from response>",
                  "subPropositions": "<base64 subPropositions from response>"
                }
              }
            }
          ]
        }
      }
    }
  }
}

Interaktions-(Klick-)Ereignisse

Interaktionsereignisse verfolgen nach, wann eine Person auf ein angezeigtes Angebot klickt oder damit interagiert. Sie müssen genau ein Token angeben, das das angeklickte Element identifiziert:

{
  "header": {
    "imsOrgId": "YOUR_ORG_ID",
    "sandboxId": "sandbox-id",
    "sandboxName": "sandbox-name",
    "source": { "name": "ajo-inbound" }
  },
  "body": {
    "xdmEntity": {
      "identityMap": {
        "ECID": [ { "id": "ecid-123", "primary": true } ]
      },
      "eventType": "decisioning.propositionInteract",
      "_experience": {
        "decisioning": {
          "propositionEventType": { "interact": 1 },
          "propositionAction": {
            "id": "b96f842b-5dd9-4c55-9dae-647d96250028",
            "tokens": ["CLaefQnVLcLbCtzEXV3Jeg"]
          },
          "propositions": [
            {
              "id": "103ae599-e6d8-4631-baf3-51dd8c6ed4c1",
              "scope": "web://my-web/IP_NLI_HP_GET_LOAN_WIDGET",
              "scopeDetails": {
                "decisionProvider": "AJO",
                "characteristics": {
                  "eventToken": "<base64 eventToken from response>",
                  "subPropositions": "<base64 subPropositions from response>"
                }
              }
            }
          ]
        }
      }
    }
  }
}

Benutzerspezifische Ereignisse

Ein benutzerspezifisches Ereignis verwendet einen kundendefinierten eventType (einen beliebigen Wert außer decisioning.proposition<Display|Interact|Dismiss>) und setzt alle Parameter display/interact/dismiss auf 0 in propositionEventType (als OTHER klassifiziert). Benutzerspezifische Ereignisse werden wie Anzeigeereignisse (Multi-Token-Filterung) für subPropositions decodiert und über die konfigurierte PQL ausgewertet:

{
  "header": {
    "imsOrgId": "YOUR_ORG_ID",
    "sandboxId": "sandbox-id",
    "sandboxName": "sandbox-name",
    "originalTimestamp": 1700000
  },
  "body": {
    "xdmEntity": {
      "identityMap": {
        "ECID": [ { "id": "ecid-123", "primary": true } ]
      },
      "eventType": "add-to-cart",
      "_experience": {
        "decisioning": {
          "propositionEventType": { "display": 0, "interact": 0, "dismiss": 0 },
          "propositionAction": {
            "id": "b96f842b-5dd9-4c55-9dae-647d96250028",
            "tokens": ["CLaefQnVLcLbCtzEXV3Jeg"]
          },
          "propositions": [
            {
              "id": "103ae599-e6d8-4631-baf3-51dd8c6ed4c1",
              "scope": "web://my-web/IP_NLI_HP_GET_LOAN_WIDGET",
              "scopeDetails": {
                "decisionProvider": "AJO",
                "characteristics": {
                  "eventToken": "<base64 eventToken from response>",
                  "subPropositions": "<base64 subPropositions from response>"
                }
              }
            }
          ]
        }
      }
    }
  }
}

Diese Ereignisse ermöglichen eine Frequenzbegrenzung, vorkonfiguriertes Reporting und eine KI-gesteuerte Ranking-Optimierung in der Entscheidungsfindung. Informationen zum Senden von Vorschlagsereignissen mit dem Web SDK finden Sie unter Code-basiertes Erlebnis: Entscheidungsimplementierungen.

End-to-End-Migrationsprozess migration-process

  1. Voraussetzungen validieren – Stellen Sie sicher, dass Ihre Ziel-Sandbox vorbereitet ist und alle Abhängigkeiten der Voraussetzungen identifiziert und bereit sind, bevor Sie die Migration starten (Profilattribute, Segment-IDs, ID-Zuordnung).

  2. Migrations-API aufrufen – Führen Sie die Migrations-API aus, um Entscheidungs-Management-Objekte mithilfe Ihrer vorbereiteten Voraussetzungen und Zuordnungen zur Entscheidungsfindung zu migrieren.

  3. Entwurfs-Entscheidungsentitäten generieren – Mit den Tools werden Kampagnen, Entscheidungsrichtlinien, Auswahlstrategien, Angebotselemente usw. im Entwurfsstatus pro Entitätszuordnung erstellt. Überprüfen Sie alle generierten Entscheidungsobjekte in der Ziel-Sandbox. Validieren Sie, ob die Benennung, Entitätstypen und Verweise korrekt sind. Noch ist nichts kundenorientiert. Das Entscheidungs-Management stellt weiterhin Live-Traffic bereit.

  4. Client- und Server-Codes aktualisieren – Implementieren Sie erforderliche Code-Änderungen, um die neuen Entscheidungsanfrage-/-antwortformate zu verwenden und die Ereignisnachverfolgung mit erforderlichen Feldern zu implementieren.

  5. Aktivieren und Umschalten – Aktivieren Sie Ihre Entscheidungsobjekte (Strategien, Richtlinien, Kampagnen, Oberflächen) und verlagern Sie den Traffic weg vom Entscheidungs-Management auf Ihre eigene Timeline.

recommendation-more-help
journey-optimizer-help