What does Windows error code 15153 (ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED) mean?

 
Previous Next
ERROR_PRI_MERGE_WRITE_FILE_FAILED ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED

ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED

Packages for a PRI file merge must all be from the same package family.

Windows assigns decimal 15153 and hexadecimal 0x00003B31 to ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED. The constant belongs to Package Resource Index (PRI) merge processing; its name is not enough to identify the affected directory object, DNS zone, policy, installer, package, or resource context.

Operational meaning

The key question is whether all inputs belong to the same package family named by the main package. The value describes a PRI merge set containing packages from more than one package family; it does not prove that the whole domain, DNS service, network, servicing stack, application package, or operating system has failed.

Likely impact: Combining families would make resource ownership and deployment identity ambiguous. 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 a PRI merge set containing packages from more than one package family.
  • This result can appear while merging resources.pri files for an app package, resource package, or deployment image.
  • This result can appear while MakePri merge or build automation that combines package resource indexes.
  • It can appear while validation of package family, main-package, bundle, schema, and canonical output constraints.

Typical causes

  • resource packages from different apps were combined.
  • package-family metadata differs by publisher or name.
  • the artifact glob includes unrelated outputs.
  • a staging directory mixes builds.

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 a PRI merge set containing packages from more than one package family, including stable GUIDs, DNs, zone names, package identities, file hashes, policy names, or process identifiers as applicable.
  3. prove the state boundary: all inputs belong to the same package family named by the main package.
  4. collect package family name of every input and package identity and publisher before restarting services, deleting objects, rebuilding packages, or changing policy.
  5. correlate artifact-selection rule with MakePri command line, input PRI inventory, package identities, schemas, file hashes, output path, tool version, and the first detailed merge diagnostic.
  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 package family name of every input.
  • collect package identity and publisher.
  • collect artifact-selection rule.
  • collect input path inventory.
  • collect MakePri package diagnostic.

Correlate this evidence with MakePri command line, input PRI inventory, package identities, schemas, file hashes, output path, tool version, and the first detailed merge diagnostic. Preserve raw identifiers and the first detailed diagnostic: translating everything to 15153 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 split the inputs by package family and merge each family independently.

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 pri_merge_multiple_package_families_not_allowed_operation — producing API, command, callback, or servicing phase.
  • record pri_merge_multiple_package_families_not_allowed_target — stable object, zone, policy, package, file, or account identity.
  • record pri_merge_multiple_package_families_not_allowed_state_before and pri_merge_multiple_package_families_not_allowed_requested_state.
  • record pri_merge_multiple_package_families_not_allowed_first_status — earliest component-specific code before translation.
  • record pri_merge_multiple_package_families_not_allowed_server, pri_merge_multiple_package_families_not_allowed_process, UTC timestamp, and correlation ID.

A support bundle for it should include decimal 15153, hexadecimal 0x00003B31, 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_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED concerns package role within one family; this code finds multiple families 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 wildcard collects language PRI files from two applications. Grouping artifacts by package family produces two valid merge operations. 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 a PRI merge set containing packages from more than one package family. 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.