| Previous | Next |
| MQ_ERROR_FAIL_VERIFY_SIGNATURE_EX | MQ_ERROR_NO_MQUSER_OU |
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS
What this result actually narrows down
The important part of MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS is not only whether the call failed, but which MSMQ subsystem had enough information to return this specific result. In this case the decisive subject is legacy primary-site-controller ownership blocks delete. The object is governed by an old enterprise ownership model, not merely an ACL on a current queue.
For MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, A domain join, a successful DNS lookup, and an LDAP bind are separate checkpoints. When diagnosing MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, directory errors must be correlated with the exact naming context, object class, GUID, and domain controller used by MSMQ.
When diagnosing MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, MSMQ uses directory services for public queues, machine configuration, security metadata, routing, aliases, and related enterprise objects. In the MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS path, private/direct queue operation can therefore succeed while a directory-dependent action fails.
MSMQ objects involved
| Subsystem | MSMQ integration with Active Directory Domain Services and the global catalog |
|---|---|
| Decisive boundary | public queue metadata and MSMQ configuration objects depend on directory reachability, schema, class, ownership, and domain credentials |
| Code-specific focus | legacy primary-site-controller ownership blocks delete |
| Primary recovery rule | Perform migration-aware cleanup through the owning controller/tooling. |
When diagnosing MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, A queue can exist locally while its public registration or MSMQ configuration object is absent, stale, wrong-class, or visible only on some domain controllers. For MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, the code-specific boundary is legacy primary-site-controller ownership blocks delete.
Triage data
- Domain/workgroup mode, forest and domain names, and selected domain controller; associate it explicitly with
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS. - When diagnosing
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, dns and ldap reachability plus the distinguished name being accessed; capture the value before cleanup or retry changes it. - In the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSpath, the directory object class, guid, owner, and replication state; compare it with a known-good call using the same account and queue type. - For this
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSresult, record the queue path or format name, local/remote placement, transactional flag, caller SID, process build, and UTC correlation ID when they apply.
For MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, log certificate thumbprints, provider names, SIDs, GUIDs, lengths, and hashes where useful, but do not log private keys, symmetric keys, credentials, or confidential message bodies.
A safe investigation order
- Record the unsigned HRESULT,
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, and the native API or COM method before a framework replaces it with a generic exception. - When diagnosing
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, capture the directory object class, GUID, owner, and replication state. - In the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSpath, capture domain/workgroup mode, forest and domain names, and selected domain controller. - Reproduce with the smallest queue/message/property set that still returns
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS; change one precondition at a time. - For
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, verify the postcondition after the failed call: queue existence, message presence, directory object state, transaction outcome, or generated output may differ by result. - When diagnosing
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, apply the code-specific recovery rule: Perform migration-aware cleanup through the owning controller/tooling.
Correct response
Perform migration-aware cleanup through the owning controller/tooling.
When diagnosing MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, retry only after a measurable state change: corrected property data, resized storage, restored service/directory reachability, recreated handle, completed transaction recovery, or repaired certificate access. In the MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS path, bound attempts and keep an idempotency key for sends or directory mutations.
What this code is not
In the MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS path, local private-queue success does not prove that public-queue registration, global catalog discovery, or the required AD DS object is healthy. The specific focus for MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS remains legacy primary-site-controller ownership blocks delete.
- In the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSpath, granting broad queue or certificate permissions may mask the symptom while creating a security defect. For thisMQ_ERROR_CANNOT_DELETE_PSC_OBJECTSresult, test the exact identity and access needed by the operation. - For this
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSresult, changing queue names, deleting directory objects, or recreating certificates without reconciliation can create a second object while callers still reference the first.
Example failure path
An enterprise migration tool encounters MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS. For MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, it compares DNS, LDAP bind, object class, and replication on the exact domain controller used by MSMQ. When diagnosing MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, the acceptance test then changes only the decisive precondition and confirms both the HRESULT and the actual queue/message state.
A regression test should force MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS, assert the raw value and relevant outputs, then correct only the documented precondition and verify the intended success or neighboring HRESULT.
Technical references
- Microsoft: Message Queuing error and information codes — source used for the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSanalysis. - Microsoft Open Specifications: MSMQ and directory services — source used for the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSanalysis. - Microsoft Open Specifications: MSMQ protocols overview — source used for the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSanalysis. - IETF RFC 4511: LDAP protocol — source used for the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSanalysis. - Microsoft: destination queues — source used for the
MQ_ERROR_CANNOT_DELETE_PSC_OBJECTSanalysis.
Looking for a different code? Search another status or error code.