CustomerUnificationDecision
Immutable clerical decision row for a party pair (merge, reject, defer, or unmerge).
This page contains
Fields
| decisionId: ID! | Surrogate id of this decision record. |
| pairId: ID! | Pair this decision applies to. |
| advisorId: ID! | Advisor scope for the pair. |
| leftSourceSystem: String! | Left party source system at decision time. |
| leftSourceId: String! | Left party source id at decision time. |
| rightSourceSystem: String! | Right party source system at decision time. |
| rightSourceId: String! | Right party source id at decision time. |
| decision: CustomerUnificationDecisionType! PREVIEW | Outcome that was recorded. |
| reviewer: String! | Authenticated principal name stored as reviewer. |
| reviewedAt: DateTime | When the decision was recorded (RFC 3339); null when no review timestamp is available. |
| notes: String | Optional audit note. |
| fieldSelections: String | Opaque JSON of per-field merge resolutions when applicable. |
Parent objects of CustomerUnificationDecision
| CustomerUnificationCluster PREVIEW | Cluster of duplicate party records reachable from an entry-point pair. The size field is always 1 + the number of members; the primary record is the cluster anchor surfaced first. |
| CustomerUnificationDecisionConflictError PREVIEW | A merge or reject decision already exists for this pair; unmerge first to record a new decision. |
| CustomerUnificationDecisionPage PREVIEW | One page of historical decisions for audit and support. |
| CustomerUnificationReviewQueueItem PREVIEW | A pending merge cluster: transitively linked party pairs grouped into one connected component for clerical review. Listing rows use the representative pair id and primary party display fields; full members are loaded on the cluster detail query. |
Mutations for CustomerUnificationDecision
| customerUnificationMarkClusterNotDuplicate PREVIEW | Record a NOT_DUPLICATE outcome for every pair (i, j) of the supplied party identifiers, idempotently. Pairs whose latest decision is already a terminal REJECT are counted as succeeded without persisting a duplicate row. Per-pair failures (missing pair, prior MERGE conflict) are isolated; the invariant succeeded + failed = number of distinct party-id pairs holds when the request is accepted. |
| customerUnificationMergeCluster PREVIEW | Record a MERGE decision for every (primary, member) pair in an N-record cluster using a single set of field selections supplied by the caller. Per-pair failures (missing pair, prior terminal decision) are isolated and reflected in succeeded / failed counters; the invariant succeeded + failed = memberPartyIds.length holds when the request is accepted. |
| customerUnificationSubmitDecisionByAdvisorId PREVIEW | Record one merge, reject, defer, or unmerge outcome for a single pair. |
Queries for CustomerUnificationDecision
| customerUnificationDecisionsByAdvisorId PREVIEW | Paged history of recorded decisions scoped to an advisor, with optional filters on reviewer, outcome, and reviewed-at range. |
| customerUnificationDecisionsByCustomerId PREVIEW | Paged Changed By audit history for a single canonical customer. Returns every clerical decision where this customer's absorbed source identifiers (via gold.party_aliases) appear on either side of the pair. Use the optional decisionIds filter to power Export Selected for CSV. |
| customerUnificationDecisionsByCustomerIdAndMarketplaceTenant PREVIEW | Paged Changed By audit history for a single canonical customer, scoped by marketplace tenant. Anchors on silver.party_xref so absorbed source identifiers across every advisor in the marketplace still match. Authorized for ROLE_CHANNEL_ADMIN only. |