diff --git a/docs/requirements/Component-ManagementService.md b/docs/requirements/Component-ManagementService.md
index c29d2c88..99450fe2 100644
--- a/docs/requirements/Component-ManagementService.md
+++ b/docs/requirements/Component-ManagementService.md
@@ -134,6 +134,8 @@ Both endpoints honour any site-scope rules attached to the caller's audit role b
- **CreateDataConnection** / **UpdateDataConnection** / **DeleteDataConnection**: Manage data connection definitions.
- **AssignDataConnectionToSite** / **UnassignDataConnectionFromSite**: Manage site assignments.
+> **Secret elision (arch-review C3).** The `PrimaryConfiguration`/`BackupConfiguration` JSON blobs can embed OPC UA user and certificate passwords, yet List/Get are readable by any authenticated user. All command responses **and** audit `afterState` are projected through a secret-elided shape (`DataConnectionPublicShape`): secret-bearing values inside the config JSON are replaced with a redaction sentinel and a `hasSecrets` flag is surfaced (mirrors the SMTP/SMS `HasCredentials` pattern). **Update** merges the sentinel via `ConfigSecretScrubber.MergeSentinels` — a client that round-trips a scrubbed config keeps the stored secret rather than wiping it.
+
### Deployments
- **DeployInstance**: Deploy configuration to a specific instance (includes pre-deployment validation).
diff --git a/src/ZB.MOM.WW.ScadaBridge.ManagementService/ManagementActor.cs b/src/ZB.MOM.WW.ScadaBridge.ManagementService/ManagementActor.cs
index c773c540..57fd228a 100644
--- a/src/ZB.MOM.WW.ScadaBridge.ManagementService/ManagementActor.cs
+++ b/src/ZB.MOM.WW.ScadaBridge.ManagementService/ManagementActor.cs
@@ -1445,12 +1445,37 @@ public class ManagementActor : ReceiveActor
// Data Connection handlers
// ========================================================================
+ ///
+ /// Secret-elided projection of a DataConnection (arch-review C3): the raw
+ /// PrimaryConfiguration/BackupConfiguration JSON can embed OPC UA user and
+ /// certificate passwords, and List/Get are readable by any authenticated user.
+ /// Mirrors . The secret-bearing config blobs
+ /// are scrubbed to the redaction sentinel; every non-config field is projected
+ /// verbatim so callers keep the full shape they had before.
+ ///
+ private static object DataConnectionPublicShape(DataConnection c)
+ {
+ var (primary, s1) = ConfigSecretScrubber.Scrub(c.PrimaryConfiguration);
+ var (backup, s2) = ConfigSecretScrubber.Scrub(c.BackupConfiguration);
+ return new
+ {
+ c.Id,
+ c.SiteId,
+ c.Name,
+ c.Protocol,
+ c.FailoverRetryCount,
+ PrimaryConfiguration = primary,
+ BackupConfiguration = backup,
+ HasSecrets = s1 || s2,
+ };
+ }
+
private static async Task