What does Windows error code 8650 (ERROR_DS_VALUE_KEY_NOT_UNIQUE) mean?

 
Previous Next
ERROR_DS_MISSING_FOREST_TRUST DNS_ERROR_RCODE_FORMAT_ERROR

ERROR_DS_VALUE_KEY_NOT_UNIQUE

The link value specified was not found, but a link value with that key was found.

Treat ERROR_DS_VALUE_KEY_NOT_UNIQUE as a domain-specific result, not as a generic exception. Diagnosis begins with the exact operation, target identity, server or process that produced it, and the earliest lower-level diagnostic available at the same timestamp.

Operational meaning

The key question is whether one linked value owns the key used by the request. The value describes lookup or update of a linked directory value whose key is expected to be unique; it does not prove that the whole domain, DNS service, network, servicing stack, application package, or operating system has failed.

Likely impact: Choosing an arbitrary value can alter the wrong relationship even though the parent object is correct. Record the scope that was actually tested instead of escalating from one rejected object or phase to a system-wide outage.

Where the result appears

  • This result can appear while processing lookup or update of a linked directory value whose key is expected to be unique.
  • This result can appear while an LDAP, replication, domain-join, schema, trust, or directory-management request.
  • This result can appear while a request routed to one particular domain controller whose replica and site state matters.
  • It can appear while a management tool that translates LDAP extended diagnostics into a Win32 result.

Typical causes

  • duplicate keyed link values exist.
  • replication conflict produced competing values.
  • the caller supplies a stale value body with a reused key.
  • migration duplicated link metadata.

Diagnostic sequence

  1. capture it immediately after the failing or status-returning call and record whether the API uses Win32, DNS_STATUS, HRESULT conversion, or callback semantics.
  2. identify the exact target involved in lookup or update of a linked directory value whose key is expected to be unique, including stable GUIDs, DNs, zone names, package identities, file hashes, policy names, or process identifiers as applicable.
  3. prove the state boundary: one linked value owns the key used by the request.
  4. collect attribute name and requested key and all matching link values before restarting services, deleting objects, rebuilding packages, or changing policy.
  5. correlate originating DSA and replication metadata with Directory Service events, Security events, LDAP extended error text, replication metadata, dcdiag output, repadmin output, and the caller trace.
  6. determine whether the result is a failure, warning, informational completion, continuation request, or marker constant before choosing retry behavior.
  7. after changing one responsible condition, repeat the same smallest operation and verify both success and absence of unintended partial effects.

Evidence to preserve

  • collect attribute name and requested key.
  • collect all matching link values.
  • collect originating DSA and replication metadata.
  • collect object DN and GUID.
  • collect application mapping that produced the key.

Correlate this evidence with Directory Service events, Security events, LDAP extended error text, replication metadata, dcdiag output, repadmin output, and the caller trace. Preserve raw identifiers and the first detailed diagnostic: translating everything to 8650 can hide whether the cause was validation, topology, authorization, replication, policy, file I/O, packaging, or an intentional continuation state.

Recovery and retry

The recovery objective for it is to identify the authoritative linked value, remove or migrate duplicates with replication awareness, and retry by key only after convergence.

Retry only after the recorded boundary changes and prior completion is known. Read-only discovery for it can usually be repeated with bounded backoff; directory mutations, DNS updates, policy installation, servicing actions, and PRI writes require a state check first. Backoff for it cannot repair malformed input, unsupported structure, identity collision, missing authority, or incompatible package metadata.

Telemetry and support fields

  • record ds_value_key_not_unique_operation — producing API, command, callback, or servicing phase.
  • record ds_value_key_not_unique_target — stable object, zone, policy, package, file, or account identity.
  • record ds_value_key_not_unique_state_before and ds_value_key_not_unique_requested_state.
  • record ds_value_key_not_unique_first_status — earliest component-specific code before translation.
  • record ds_value_key_not_unique_server, ds_value_key_not_unique_process, UTC timestamp, and correlation ID.

A support bundle for it should include decimal 8650, hexadecimal 0x000021CA, the smallest reproducible request, target identity, effective configuration, and evidence from the owning Windows component. When documenting it, remove secrets from exported logs but keep SIDs, GUIDs, package-family names, record types, and hashes when they are needed to distinguish objects.

Difference from nearby results

ERROR_DS_KEY_NOT_UNIQUE concerns object lookup by key; this code concerns a key within a multi-valued linked attribute This distinction determines whether the correct next step is input correction, topology repair, continuation, policy review, package rebuild, or no error handling at all.

Practical validation scenario

A migration creates two link values with the same external key. Removing the obsolete value and allowing replication restores unambiguous updates. A negative test should reproduce it with the responsible condition preserved; the recovery test should alter only that condition and confirm the intended final state.

Developer and administrator guidance

Developers should model it explicitly in the result domain instead of collapsing every nonzero value into “failed.” Administrators should capture evidence before destructive remediation and use the component that owns lookup or update of a linked directory value whose key is expected to be unique. Monitoring for it should suppress range markers and classify warning, informational, cancellation, and continuation values separately from terminal failures.

References


Looking for a different code? Search another status or error code.