From 9dccf8e72f6252ff2ea0700d3570a1c467cdd5e9 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 8 Apr 2026 15:56:23 -0400 Subject: [PATCH] deprecate(lmxproxy): move all LmxProxy code, tests, and docs to deprecated/ LmxProxy is no longer needed. Moved the entire lmxproxy/ workspace, DCL adapter files, and related docs to deprecated/. Removed LmxProxy registration from DataConnectionFactory, project reference from DCL, protocol option from UI, and cleaned up all requirement docs. --- CLAUDE.md | 5 +- ScadaLink.slnx | 3 - .../2026-03-19-lmxfakeproxy-design.md | 0 .../2026-03-19-lmxfakeproxy-implementation.md | 0 ...-lmxfakeproxy-implementation.md.tasks.json | 0 .../ILmxProxyClient.cs | 0 .../LmxProxyDataConnection.cs | 0 .../LmxProxyDataConnectionTests.cs | 0 .../RealLmxProxyClient.cs | 0 .../docs-lmxproxy_protocol.md | 0 {lmxproxy => deprecated/lmxproxy}/.gitignore | 0 {lmxproxy => deprecated/lmxproxy}/CLAUDE.md | 0 .../lmxproxy}/ZB.MOM.WW.LmxProxy.slnx | 0 .../lmxproxy}/docs/deviations.md | 0 .../lmxproxy}/docs/lmxproxy_protocol.md | 0 .../lmxproxy}/docs/lmxproxy_updates.md | 0 .../2026-03-21-lmxproxy-v2-rebuild-design.md | 0 ...03-22-gap1-gap2-reconnect-subscriptions.md | 0 ...gap2-reconnect-subscriptions.md.tasks.json | 0 .../docs/plans/lmxproxy-stale-session-fix.md | 0 .../plans/phase-1-protocol-domain-types.md | 0 .../lmxproxy}/docs/plans/phase-2-host-core.md | 0 .../phase-3-host-grpc-security-config.md | 0 .../docs/plans/phase-4-host-health-metrics.md | 0 .../docs/plans/phase-5-client-core.md | 0 .../docs/plans/phase-6-client-extras.md | 0 .../plans/phase-7-integration-deployment.md | 0 .../docs/requirements/Component-Client.md | 0 .../requirements/Component-Configuration.md | 0 .../docs/requirements/Component-GrpcServer.md | 0 .../Component-HealthAndMetrics.md | 0 .../requirements/Component-MxAccessClient.md | 0 .../docs/requirements/Component-Protocol.md | 0 .../docs/requirements/Component-Security.md | 0 .../requirements/Component-ServiceHost.md | 0 .../requirements/Component-SessionManager.md | 0 .../Component-SubscriptionManager.md | 0 .../docs/requirements/HighLevelReqs.md | 0 .../lmxproxy}/docs/sta_gap.md | 0 .../lmxproxy}/instances_config.md | 0 .../lmxproxy}/lib/ArchestrA.MXAccess.dll | Bin .../lmxproxy}/mxaccess_documentation.md | 0 .../ClientTlsConfiguration.cs | 0 .../Domain/ConnectionState.cs | 0 .../Domain/Quality.cs | 0 .../Domain/QualityExtensions.cs | 0 .../Domain/ScadaContracts.cs | 0 .../ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs | 0 .../ILmxProxyClient.cs | 0 .../ILmxProxyClientFactory.cs | 0 .../LmxProxyClient.ApiKeyInfo.cs | 0 .../LmxProxyClient.ClientMetrics.cs | 0 .../LmxProxyClient.CodeFirstSubscription.cs | 0 .../LmxProxyClient.Connection.cs | 0 .../LmxProxyClient.ISubscription.cs | 0 .../LmxProxyClient.cs | 0 .../LmxProxyClientBuilder.cs | 0 .../Properties/AssemblyInfo.cs | 0 .../Security/GrpcChannelFactory.cs | 0 .../ServiceCollectionExtensions.cs | 0 .../StreamingExtensions.cs | 0 .../ZB.MOM.WW.LmxProxy.Client.csproj | 0 .../ZB.MOM.WW.LmxProxy.Host/App.config | 0 .../Configuration/ConfigurationValidator.cs | 0 .../Configuration/LmxProxyConfiguration.cs | 0 .../ServiceRecoveryConfiguration.cs | 0 .../SubscriptionConfiguration.cs | 0 .../Configuration/TlsConfiguration.cs | 0 .../Domain/ClientStats.cs | 0 .../Domain/ConnectionState.cs | 0 .../Domain/ConnectionStateChangedEventArgs.cs | 0 .../Domain/IScadaClient.cs | 0 .../ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs | 0 .../Domain/SubscriptionStats.cs | 0 .../ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs | 0 .../Grpc/Protos/scada.proto | 0 .../Grpc/Services/ScadaGrpcService.cs | 0 .../MxAccessClient.Connection.cs | 0 .../MxAccessClient.EventHandlers.cs | 0 .../MxAccessClient.NestedTypes.cs | 0 .../MxAccessClient.ReadWrite.cs | 0 .../MxAccessClient.Subscription.cs | 0 .../Implementation/MxAccessClient.cs | 0 .../LmxProxyService.cs | 0 .../ZB.MOM.WW.LmxProxy.Host/Program.cs | 0 .../Security/ApiKey.cs | 0 .../Security/ApiKeyConfiguration.cs | 0 .../Security/ApiKeyInterceptor.cs | 0 .../Security/ApiKeyService.cs | 0 .../Security/TlsCertificateManager.cs | 0 .../Services/HealthCheckService.cs | 0 .../Services/PerformanceMetrics.cs | 0 .../Services/RetryPolicies.cs | 0 .../Services/SessionManager.cs | 0 .../Services/StatusReportService.cs | 0 .../Services/StatusWebServer.cs | 0 .../Services/SubscriptionManager.cs | 0 .../ZB.MOM.WW.LmxProxy.Host.csproj | 0 .../appsettings.Production.json | 0 .../ZB.MOM.WW.LmxProxy.Host/appsettings.json | 0 .../appsettings.tls.json | 0 .../ClientConfiguration.cs | 0 .../ClientTlsConfiguration.cs | 0 .../Domain/ConnectionState.cs | 0 .../Domain/Quality.cs | 0 .../Domain/QualityExtensions.cs | 0 .../Domain/ScadaContracts.cs | 0 .../ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs | 0 .../ILmxProxyClient.cs | 0 .../ILmxProxyClientFactory.cs | 0 .../LmxProxyClient.ApiKeyInfo.cs | 0 .../LmxProxyClient.ClientMetrics.cs | 0 .../LmxProxyClient.CodeFirstSubscription.cs | 0 .../LmxProxyClient.Connection.cs | 0 .../LmxProxyClient.ISubscription.cs | 0 .../LmxProxyClient.cs | 0 .../LmxProxyClientBuilder.cs | 0 .../LmxProxyClientOptions.cs | 0 .../Security/GrpcChannelFactory.cs | 0 .../ServiceCollectionExtensions.cs | 0 .../StreamingExtensions.cs | 0 .../ZB.MOM.WW.LmxProxy.Client.csproj | 0 .../Configuration/ConfigurationValidator.cs | 0 .../Configuration/ConnectionConfiguration.cs | 0 .../Configuration/LmxProxyConfiguration.cs | 0 .../ServiceRecoveryConfiguration.cs | 0 .../SubscriptionConfiguration.cs | 0 .../Configuration/TlsConfiguration.cs | 0 .../Configuration/WebServerConfiguration.cs | 0 .../Domain/ConnectionState.cs | 0 .../Domain/ConnectionStateChangedEventArgs.cs | 0 .../Domain/IScadaClient.cs | 0 .../Domain/MxStatusMapper.cs | 0 .../Domain/ProbeResult.cs | 0 .../ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs | 0 .../Domain/QualityCodeMapper.cs | 0 .../Domain/QualityExtensions.cs | 0 .../Domain/SubscriptionStats.cs | 0 .../Domain/TypedValueComparer.cs | 0 .../Domain/TypedValueConverter.cs | 0 .../src/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs | 0 .../Grpc/Protos/scada.proto | 0 .../Grpc/Services/ScadaGrpcService.cs | 0 .../Health/HealthCheckService.cs | 0 .../LmxProxyService.cs | 0 .../Metrics/PerformanceMetrics.cs | 0 .../MxAccess/MxAccessClient.Connection.cs | 0 .../MxAccess/MxAccessClient.EventHandlers.cs | 0 .../MxAccess/MxAccessClient.ReadWrite.cs | 0 .../MxAccess/MxAccessClient.Subscription.cs | 0 .../MxAccess/MxAccessClient.cs | 0 .../MxAccess/StaComThread.cs | 0 .../src/ZB.MOM.WW.LmxProxy.Host/Program.cs | 0 .../Security/ApiKey.cs | 0 .../Security/ApiKeyConfiguration.cs | 0 .../Security/ApiKeyInterceptor.cs | 0 .../Security/ApiKeyService.cs | 0 .../Security/TlsCertificateManager.cs | 0 .../Sessions/SessionManager.cs | 0 .../Status/StatusModels.cs | 0 .../Status/StatusReportService.cs | 0 .../Status/StatusWebServer.cs | 0 .../Subscriptions/SubscriptionManager.cs | 0 .../ZB.MOM.WW.LmxProxy.Host.csproj | 0 .../ZB.MOM.WW.LmxProxy.Host/appsettings.json | 0 .../appsettings.v2.json | 0 .../appsettings.v2b.json | 0 .../CheckApiKeyTests.cs | 0 .../ConnectionTests.cs | 0 .../GlobalUsings.cs | 0 .../IntegrationTestBase.cs | 0 .../ReadTests.cs | 0 .../SubscribeTests.cs | 0 .../WriteBatchAndWaitTests.cs | 0 .../WriteTests.cs | 0 ...WW.LmxProxy.Client.IntegrationTests.csproj | 0 .../appsettings.test.json | 0 .../xunit.runner.json | 0 .../ClientMetricsTests.cs | 0 .../CrossStackSerializationTests.cs | 0 .../Domain/QualityExtensionsTests.cs | 0 .../Domain/ScadaContractsTests.cs | 0 .../Domain/VtqTests.cs | 0 .../Fakes/FakeLmxProxyClient.cs | 0 .../Fakes/FakeScadaService.cs | 0 .../Fakes/TestableClient.cs | 0 .../LmxProxyClientBuilderTests.cs | 0 .../LmxProxyClientConnectionTests.cs | 0 .../LmxProxyClientFactoryTests.cs | 0 .../LmxProxyClientReadWriteTests.cs | 0 .../LmxProxyClientSubscriptionTests.cs | 0 .../ServiceCollectionExtensionsTests.cs | 0 .../StreamingExtensionsTests.cs | 0 .../TypedValueConversionTests.cs | 0 .../ZB.MOM.WW.LmxProxy.Client.Tests.csproj | 0 .../ConfigurationValidatorTests.cs | 0 .../Domain/QualityCodeMapperTests.cs | 0 .../Domain/QualityExtensionsTests.cs | 0 .../Domain/TypedValueConverterTests.cs | 0 .../Health/HealthCheckServiceTests.cs | 0 .../Metrics/PerformanceMetricsTests.cs | 0 .../MxAccess/TypedValueEqualsTests.cs | 0 .../Security/ApiKeyInterceptorTests.cs | 0 .../Security/ApiKeyServiceTests.cs | 0 .../Sessions/SessionManagerTests.cs | 0 .../Status/StatusReportServiceTests.cs | 0 .../Subscriptions/SubscriptionManagerTests.cs | 0 .../ZB.MOM.WW.LmxProxy.Host.Tests.csproj | 0 windev.md => deprecated/windev.md | 0 .../Component-ClusterInfrastructure.md | 2 +- .../Component-DataConnectionLayer.md | 98 ++---------------- docs/requirements/HighLevelReqs.md | 4 +- docs/test_infra/test_infra.md | 16 +-- .../Pages/Admin/DataConnectionForm.razor | 1 - .../Pages/Deployment/DebugView.razor | 10 +- .../DataConnectionFactory.cs | 2 - .../DataConnectionOptions.cs | 3 - .../IDataConnectionFactory.cs | 2 +- .../ScadaLink.DataConnectionLayer.csproj | 1 - .../DataConnectionFactoryTests.cs | 10 -- 220 files changed, 25 insertions(+), 132 deletions(-) rename {docs/plans => deprecated}/2026-03-19-lmxfakeproxy-design.md (100%) rename {docs/plans => deprecated}/2026-03-19-lmxfakeproxy-implementation.md (100%) rename {docs/plans => deprecated}/2026-03-19-lmxfakeproxy-implementation.md.tasks.json (100%) rename {src/ScadaLink.DataConnectionLayer/Adapters => deprecated}/ILmxProxyClient.cs (100%) rename {src/ScadaLink.DataConnectionLayer/Adapters => deprecated}/LmxProxyDataConnection.cs (100%) rename {tests/ScadaLink.DataConnectionLayer.Tests => deprecated}/LmxProxyDataConnectionTests.cs (100%) rename {src/ScadaLink.DataConnectionLayer/Adapters => deprecated}/RealLmxProxyClient.cs (100%) rename docs/requirements/lmxproxy_protocol.md => deprecated/docs-lmxproxy_protocol.md (100%) rename {lmxproxy => deprecated/lmxproxy}/.gitignore (100%) rename {lmxproxy => deprecated/lmxproxy}/CLAUDE.md (100%) rename {lmxproxy => deprecated/lmxproxy}/ZB.MOM.WW.LmxProxy.slnx (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/deviations.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/lmxproxy_protocol.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/lmxproxy_updates.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/2026-03-21-lmxproxy-v2-rebuild-design.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md.tasks.json (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/lmxproxy-stale-session-fix.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/phase-1-protocol-domain-types.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/phase-2-host-core.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/phase-3-host-grpc-security-config.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/phase-4-host-health-metrics.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/phase-5-client-core.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/phase-6-client-extras.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/plans/phase-7-integration-deployment.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-Client.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-Configuration.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-GrpcServer.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-HealthAndMetrics.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-MxAccessClient.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-Protocol.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-Security.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-ServiceHost.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-SessionManager.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/Component-SubscriptionManager.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/requirements/HighLevelReqs.md (100%) rename {lmxproxy => deprecated/lmxproxy}/docs/sta_gap.md (100%) rename {lmxproxy => deprecated/lmxproxy}/instances_config.md (100%) rename {lmxproxy => deprecated/lmxproxy}/lib/ArchestrA.MXAccess.dll (100%) rename {lmxproxy => deprecated/lmxproxy}/mxaccess_documentation.md (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/Properties/AssemblyInfo.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/App.config (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ClientStats.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Connection.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.EventHandlers.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.NestedTypes.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.ReadWrite.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Subscription.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Program.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/HealthCheckService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/PerformanceMetrics.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/RetryPolicies.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SessionManager.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusReportService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusWebServer.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SubscriptionManager.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.Production.json (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.json (100%) rename {lmxproxy => deprecated/lmxproxy}/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.tls.json (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/ClientConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientOptions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConnectionConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Configuration/WebServerConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/MxStatusMapper.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/ProbeResult.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityCodeMapper.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityExtensions.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueComparer.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueConverter.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Health/HealthCheckService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Metrics/PerformanceMetrics.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Connection.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.EventHandlers.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.ReadWrite.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Subscription.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/StaComThread.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Program.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Sessions/SessionManager.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusWebServer.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/appsettings.json (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2.json (100%) rename {lmxproxy => deprecated/lmxproxy}/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2b.json (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/CheckApiKeyTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ConnectionTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/GlobalUsings.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/IntegrationTestBase.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ReadTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/SubscribeTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteBatchAndWaitTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests.csproj (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/appsettings.test.json (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/xunit.runner.json (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ClientMetricsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/CrossStack/CrossStackSerializationTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/QualityExtensionsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/ScadaContractsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/VtqTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeLmxProxyClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeScadaService.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/TestableClient.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientBuilderTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientConnectionTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientFactoryTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientReadWriteTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientSubscriptionTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ServiceCollectionExtensionsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/StreamingExtensionsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/TypedValueConversionTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ZB.MOM.WW.LmxProxy.Client.Tests.csproj (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Configuration/ConfigurationValidatorTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityCodeMapperTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityExtensionsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/TypedValueConverterTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Health/HealthCheckServiceTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Metrics/PerformanceMetricsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/MxAccess/TypedValueEqualsTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyInterceptorTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyServiceTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Sessions/SessionManagerTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Status/StatusReportServiceTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Subscriptions/SubscriptionManagerTests.cs (100%) rename {lmxproxy => deprecated/lmxproxy}/tests/ZB.MOM.WW.LmxProxy.Host.Tests/ZB.MOM.WW.LmxProxy.Host.Tests.csproj (100%) rename windev.md => deprecated/windev.md (100%) diff --git a/CLAUDE.md b/CLAUDE.md index 54fa2ec..9b6680e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,8 +7,7 @@ This project contains design documentation for a distributed SCADA system built - `README.md` — Master index with component table and architecture diagrams. - `docs/requirements/HighLevelReqs.md` — Complete high-level requirements covering all functional areas. - `docs/requirements/Component-*.md` — Individual component design documents (one per component). -- `docs/requirements/lmxproxy_protocol.md` — LmxProxy gRPC protocol specification. -- `docs/test_infra/test_infra.md` — Master test infrastructure doc (OPC UA, LDAP, MS SQL, SMTP, REST API, LmxFakeProxy, Traefik). +- `docs/test_infra/test_infra.md` — Master test infrastructure doc (OPC UA, LDAP, MS SQL, SMTP, REST API, Traefik). - `docs/plans/` — Design decision documents from refinement sessions. - `AkkaDotNet/` — Akka.NET reference documentation and best practices notes. - `infra/` — Docker Compose and config files for local test services. @@ -160,5 +159,5 @@ This project contains design documentation for a distributed SCADA system built - **Test user**: `--username multi-role --password password` — has Admin, Design, and Deployment roles. The `admin` user only has the Admin role and cannot create templates, data connections, or deploy. - **Config file**: `~/.scadalink/config.json` — stores `managementUrl` and default format. See `docker/README.md` for a ready-to-use test config. - **Rebuild cluster**: `bash docker/deploy.sh` — builds the `scadalink:latest` image and recreates all containers. Run this after code changes to ManagementActor, Host, or any server-side component. -- **Infrastructure services**: `cd infra && docker compose up -d` — starts LDAP, MS SQL, OPC UA, SMTP, REST API, and LmxFakeProxy. These are separate from the cluster containers in `docker/`. +- **Infrastructure services**: `cd infra && docker compose up -d` — starts LDAP, MS SQL, OPC UA, SMTP, and REST API. These are separate from the cluster containers in `docker/`. - **All test LDAP passwords**: `password` (see `infra/glauth/config.toml` for users and groups). diff --git a/ScadaLink.slnx b/ScadaLink.slnx index 6ba0660..465035b 100644 --- a/ScadaLink.slnx +++ b/ScadaLink.slnx @@ -20,9 +20,6 @@ - - - diff --git a/docs/plans/2026-03-19-lmxfakeproxy-design.md b/deprecated/2026-03-19-lmxfakeproxy-design.md similarity index 100% rename from docs/plans/2026-03-19-lmxfakeproxy-design.md rename to deprecated/2026-03-19-lmxfakeproxy-design.md diff --git a/docs/plans/2026-03-19-lmxfakeproxy-implementation.md b/deprecated/2026-03-19-lmxfakeproxy-implementation.md similarity index 100% rename from docs/plans/2026-03-19-lmxfakeproxy-implementation.md rename to deprecated/2026-03-19-lmxfakeproxy-implementation.md diff --git a/docs/plans/2026-03-19-lmxfakeproxy-implementation.md.tasks.json b/deprecated/2026-03-19-lmxfakeproxy-implementation.md.tasks.json similarity index 100% rename from docs/plans/2026-03-19-lmxfakeproxy-implementation.md.tasks.json rename to deprecated/2026-03-19-lmxfakeproxy-implementation.md.tasks.json diff --git a/src/ScadaLink.DataConnectionLayer/Adapters/ILmxProxyClient.cs b/deprecated/ILmxProxyClient.cs similarity index 100% rename from src/ScadaLink.DataConnectionLayer/Adapters/ILmxProxyClient.cs rename to deprecated/ILmxProxyClient.cs diff --git a/src/ScadaLink.DataConnectionLayer/Adapters/LmxProxyDataConnection.cs b/deprecated/LmxProxyDataConnection.cs similarity index 100% rename from src/ScadaLink.DataConnectionLayer/Adapters/LmxProxyDataConnection.cs rename to deprecated/LmxProxyDataConnection.cs diff --git a/tests/ScadaLink.DataConnectionLayer.Tests/LmxProxyDataConnectionTests.cs b/deprecated/LmxProxyDataConnectionTests.cs similarity index 100% rename from tests/ScadaLink.DataConnectionLayer.Tests/LmxProxyDataConnectionTests.cs rename to deprecated/LmxProxyDataConnectionTests.cs diff --git a/src/ScadaLink.DataConnectionLayer/Adapters/RealLmxProxyClient.cs b/deprecated/RealLmxProxyClient.cs similarity index 100% rename from src/ScadaLink.DataConnectionLayer/Adapters/RealLmxProxyClient.cs rename to deprecated/RealLmxProxyClient.cs diff --git a/docs/requirements/lmxproxy_protocol.md b/deprecated/docs-lmxproxy_protocol.md similarity index 100% rename from docs/requirements/lmxproxy_protocol.md rename to deprecated/docs-lmxproxy_protocol.md diff --git a/lmxproxy/.gitignore b/deprecated/lmxproxy/.gitignore similarity index 100% rename from lmxproxy/.gitignore rename to deprecated/lmxproxy/.gitignore diff --git a/lmxproxy/CLAUDE.md b/deprecated/lmxproxy/CLAUDE.md similarity index 100% rename from lmxproxy/CLAUDE.md rename to deprecated/lmxproxy/CLAUDE.md diff --git a/lmxproxy/ZB.MOM.WW.LmxProxy.slnx b/deprecated/lmxproxy/ZB.MOM.WW.LmxProxy.slnx similarity index 100% rename from lmxproxy/ZB.MOM.WW.LmxProxy.slnx rename to deprecated/lmxproxy/ZB.MOM.WW.LmxProxy.slnx diff --git a/lmxproxy/docs/deviations.md b/deprecated/lmxproxy/docs/deviations.md similarity index 100% rename from lmxproxy/docs/deviations.md rename to deprecated/lmxproxy/docs/deviations.md diff --git a/lmxproxy/docs/lmxproxy_protocol.md b/deprecated/lmxproxy/docs/lmxproxy_protocol.md similarity index 100% rename from lmxproxy/docs/lmxproxy_protocol.md rename to deprecated/lmxproxy/docs/lmxproxy_protocol.md diff --git a/lmxproxy/docs/lmxproxy_updates.md b/deprecated/lmxproxy/docs/lmxproxy_updates.md similarity index 100% rename from lmxproxy/docs/lmxproxy_updates.md rename to deprecated/lmxproxy/docs/lmxproxy_updates.md diff --git a/lmxproxy/docs/plans/2026-03-21-lmxproxy-v2-rebuild-design.md b/deprecated/lmxproxy/docs/plans/2026-03-21-lmxproxy-v2-rebuild-design.md similarity index 100% rename from lmxproxy/docs/plans/2026-03-21-lmxproxy-v2-rebuild-design.md rename to deprecated/lmxproxy/docs/plans/2026-03-21-lmxproxy-v2-rebuild-design.md diff --git a/lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md b/deprecated/lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md similarity index 100% rename from lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md rename to deprecated/lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md diff --git a/lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md.tasks.json b/deprecated/lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md.tasks.json similarity index 100% rename from lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md.tasks.json rename to deprecated/lmxproxy/docs/plans/2026-03-22-gap1-gap2-reconnect-subscriptions.md.tasks.json diff --git a/lmxproxy/docs/plans/lmxproxy-stale-session-fix.md b/deprecated/lmxproxy/docs/plans/lmxproxy-stale-session-fix.md similarity index 100% rename from lmxproxy/docs/plans/lmxproxy-stale-session-fix.md rename to deprecated/lmxproxy/docs/plans/lmxproxy-stale-session-fix.md diff --git a/lmxproxy/docs/plans/phase-1-protocol-domain-types.md b/deprecated/lmxproxy/docs/plans/phase-1-protocol-domain-types.md similarity index 100% rename from lmxproxy/docs/plans/phase-1-protocol-domain-types.md rename to deprecated/lmxproxy/docs/plans/phase-1-protocol-domain-types.md diff --git a/lmxproxy/docs/plans/phase-2-host-core.md b/deprecated/lmxproxy/docs/plans/phase-2-host-core.md similarity index 100% rename from lmxproxy/docs/plans/phase-2-host-core.md rename to deprecated/lmxproxy/docs/plans/phase-2-host-core.md diff --git a/lmxproxy/docs/plans/phase-3-host-grpc-security-config.md b/deprecated/lmxproxy/docs/plans/phase-3-host-grpc-security-config.md similarity index 100% rename from lmxproxy/docs/plans/phase-3-host-grpc-security-config.md rename to deprecated/lmxproxy/docs/plans/phase-3-host-grpc-security-config.md diff --git a/lmxproxy/docs/plans/phase-4-host-health-metrics.md b/deprecated/lmxproxy/docs/plans/phase-4-host-health-metrics.md similarity index 100% rename from lmxproxy/docs/plans/phase-4-host-health-metrics.md rename to deprecated/lmxproxy/docs/plans/phase-4-host-health-metrics.md diff --git a/lmxproxy/docs/plans/phase-5-client-core.md b/deprecated/lmxproxy/docs/plans/phase-5-client-core.md similarity index 100% rename from lmxproxy/docs/plans/phase-5-client-core.md rename to deprecated/lmxproxy/docs/plans/phase-5-client-core.md diff --git a/lmxproxy/docs/plans/phase-6-client-extras.md b/deprecated/lmxproxy/docs/plans/phase-6-client-extras.md similarity index 100% rename from lmxproxy/docs/plans/phase-6-client-extras.md rename to deprecated/lmxproxy/docs/plans/phase-6-client-extras.md diff --git a/lmxproxy/docs/plans/phase-7-integration-deployment.md b/deprecated/lmxproxy/docs/plans/phase-7-integration-deployment.md similarity index 100% rename from lmxproxy/docs/plans/phase-7-integration-deployment.md rename to deprecated/lmxproxy/docs/plans/phase-7-integration-deployment.md diff --git a/lmxproxy/docs/requirements/Component-Client.md b/deprecated/lmxproxy/docs/requirements/Component-Client.md similarity index 100% rename from lmxproxy/docs/requirements/Component-Client.md rename to deprecated/lmxproxy/docs/requirements/Component-Client.md diff --git a/lmxproxy/docs/requirements/Component-Configuration.md b/deprecated/lmxproxy/docs/requirements/Component-Configuration.md similarity index 100% rename from lmxproxy/docs/requirements/Component-Configuration.md rename to deprecated/lmxproxy/docs/requirements/Component-Configuration.md diff --git a/lmxproxy/docs/requirements/Component-GrpcServer.md b/deprecated/lmxproxy/docs/requirements/Component-GrpcServer.md similarity index 100% rename from lmxproxy/docs/requirements/Component-GrpcServer.md rename to deprecated/lmxproxy/docs/requirements/Component-GrpcServer.md diff --git a/lmxproxy/docs/requirements/Component-HealthAndMetrics.md b/deprecated/lmxproxy/docs/requirements/Component-HealthAndMetrics.md similarity index 100% rename from lmxproxy/docs/requirements/Component-HealthAndMetrics.md rename to deprecated/lmxproxy/docs/requirements/Component-HealthAndMetrics.md diff --git a/lmxproxy/docs/requirements/Component-MxAccessClient.md b/deprecated/lmxproxy/docs/requirements/Component-MxAccessClient.md similarity index 100% rename from lmxproxy/docs/requirements/Component-MxAccessClient.md rename to deprecated/lmxproxy/docs/requirements/Component-MxAccessClient.md diff --git a/lmxproxy/docs/requirements/Component-Protocol.md b/deprecated/lmxproxy/docs/requirements/Component-Protocol.md similarity index 100% rename from lmxproxy/docs/requirements/Component-Protocol.md rename to deprecated/lmxproxy/docs/requirements/Component-Protocol.md diff --git a/lmxproxy/docs/requirements/Component-Security.md b/deprecated/lmxproxy/docs/requirements/Component-Security.md similarity index 100% rename from lmxproxy/docs/requirements/Component-Security.md rename to deprecated/lmxproxy/docs/requirements/Component-Security.md diff --git a/lmxproxy/docs/requirements/Component-ServiceHost.md b/deprecated/lmxproxy/docs/requirements/Component-ServiceHost.md similarity index 100% rename from lmxproxy/docs/requirements/Component-ServiceHost.md rename to deprecated/lmxproxy/docs/requirements/Component-ServiceHost.md diff --git a/lmxproxy/docs/requirements/Component-SessionManager.md b/deprecated/lmxproxy/docs/requirements/Component-SessionManager.md similarity index 100% rename from lmxproxy/docs/requirements/Component-SessionManager.md rename to deprecated/lmxproxy/docs/requirements/Component-SessionManager.md diff --git a/lmxproxy/docs/requirements/Component-SubscriptionManager.md b/deprecated/lmxproxy/docs/requirements/Component-SubscriptionManager.md similarity index 100% rename from lmxproxy/docs/requirements/Component-SubscriptionManager.md rename to deprecated/lmxproxy/docs/requirements/Component-SubscriptionManager.md diff --git a/lmxproxy/docs/requirements/HighLevelReqs.md b/deprecated/lmxproxy/docs/requirements/HighLevelReqs.md similarity index 100% rename from lmxproxy/docs/requirements/HighLevelReqs.md rename to deprecated/lmxproxy/docs/requirements/HighLevelReqs.md diff --git a/lmxproxy/docs/sta_gap.md b/deprecated/lmxproxy/docs/sta_gap.md similarity index 100% rename from lmxproxy/docs/sta_gap.md rename to deprecated/lmxproxy/docs/sta_gap.md diff --git a/lmxproxy/instances_config.md b/deprecated/lmxproxy/instances_config.md similarity index 100% rename from lmxproxy/instances_config.md rename to deprecated/lmxproxy/instances_config.md diff --git a/lmxproxy/lib/ArchestrA.MXAccess.dll b/deprecated/lmxproxy/lib/ArchestrA.MXAccess.dll similarity index 100% rename from lmxproxy/lib/ArchestrA.MXAccess.dll rename to deprecated/lmxproxy/lib/ArchestrA.MXAccess.dll diff --git a/lmxproxy/mxaccess_documentation.md b/deprecated/lmxproxy/mxaccess_documentation.md similarity index 100% rename from lmxproxy/mxaccess_documentation.md rename to deprecated/lmxproxy/mxaccess_documentation.md diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Properties/AssemblyInfo.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Properties/AssemblyInfo.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Properties/AssemblyInfo.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Properties/AssemblyInfo.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/App.config b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/App.config similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/App.config rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/App.config diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ClientStats.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ClientStats.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ClientStats.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ClientStats.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Connection.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Connection.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Connection.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Connection.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.EventHandlers.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.EventHandlers.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.EventHandlers.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.EventHandlers.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.NestedTypes.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.NestedTypes.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.NestedTypes.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.NestedTypes.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.ReadWrite.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.ReadWrite.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.ReadWrite.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.ReadWrite.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Subscription.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Subscription.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Subscription.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.Subscription.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Implementation/MxAccessClient.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Program.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Program.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Program.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Program.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/HealthCheckService.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/HealthCheckService.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/HealthCheckService.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/HealthCheckService.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/PerformanceMetrics.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/PerformanceMetrics.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/PerformanceMetrics.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/PerformanceMetrics.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/RetryPolicies.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/RetryPolicies.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/RetryPolicies.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/RetryPolicies.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SessionManager.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SessionManager.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SessionManager.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SessionManager.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusReportService.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusReportService.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusReportService.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusReportService.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusWebServer.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusWebServer.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusWebServer.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/StatusWebServer.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SubscriptionManager.cs b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SubscriptionManager.cs similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SubscriptionManager.cs rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Services/SubscriptionManager.cs diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.Production.json b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.Production.json similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.Production.json rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.Production.json diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.json b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.json similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.json rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.json diff --git a/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.tls.json b/deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.tls.json similarity index 100% rename from lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.tls.json rename to deprecated/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/appsettings.tls.json diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ClientTlsConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ConnectionState.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Quality.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/QualityExtensions.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/ScadaContracts.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Domain/Vtq.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClient.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ILmxProxyClientFactory.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ApiKeyInfo.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ClientMetrics.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.CodeFirstSubscription.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.Connection.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.ISubscription.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClient.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientBuilder.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientOptions.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientOptions.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientOptions.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/LmxProxyClientOptions.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/Security/GrpcChannelFactory.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ServiceCollectionExtensions.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/StreamingExtensions.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Client/ZB.MOM.WW.LmxProxy.Client.csproj diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConfigurationValidator.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConnectionConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConnectionConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConnectionConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ConnectionConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/ServiceRecoveryConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/SubscriptionConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/TlsConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/WebServerConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/WebServerConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/WebServerConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Configuration/WebServerConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionState.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ConnectionStateChangedEventArgs.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/IScadaClient.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/MxStatusMapper.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/MxStatusMapper.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/MxStatusMapper.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/MxStatusMapper.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ProbeResult.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ProbeResult.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ProbeResult.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/ProbeResult.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Quality.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityCodeMapper.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityCodeMapper.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityCodeMapper.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityCodeMapper.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityExtensions.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityExtensions.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityExtensions.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/QualityExtensions.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueComparer.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueComparer.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueComparer.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueComparer.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueConverter.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueConverter.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueConverter.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/TypedValueConverter.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/Vtq.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Protos/scada.proto diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Grpc/Services/ScadaGrpcService.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Health/HealthCheckService.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Health/HealthCheckService.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Health/HealthCheckService.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Health/HealthCheckService.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/LmxProxyService.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Metrics/PerformanceMetrics.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Metrics/PerformanceMetrics.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Metrics/PerformanceMetrics.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Metrics/PerformanceMetrics.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Connection.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Connection.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Connection.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Connection.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.EventHandlers.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.EventHandlers.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.EventHandlers.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.EventHandlers.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.ReadWrite.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.ReadWrite.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.ReadWrite.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.ReadWrite.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Subscription.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Subscription.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Subscription.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.Subscription.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/MxAccessClient.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/StaComThread.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/StaComThread.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/StaComThread.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/MxAccess/StaComThread.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Program.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Program.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Program.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Program.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKey.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyConfiguration.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyInterceptor.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/ApiKeyService.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Security/TlsCertificateManager.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Sessions/SessionManager.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Sessions/SessionManager.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Sessions/SessionManager.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Sessions/SessionManager.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusWebServer.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusWebServer.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusWebServer.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusWebServer.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/ZB.MOM.WW.LmxProxy.Host.csproj diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.json b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.json similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.json rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.json diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2.json b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2.json similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2.json rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2.json diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2b.json b/deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2b.json similarity index 100% rename from lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2b.json rename to deprecated/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/appsettings.v2b.json diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/CheckApiKeyTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/CheckApiKeyTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/CheckApiKeyTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/CheckApiKeyTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ConnectionTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ConnectionTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ConnectionTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ConnectionTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/GlobalUsings.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/GlobalUsings.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/GlobalUsings.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/GlobalUsings.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/IntegrationTestBase.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/IntegrationTestBase.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/IntegrationTestBase.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/IntegrationTestBase.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ReadTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ReadTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ReadTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ReadTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/SubscribeTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/SubscribeTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/SubscribeTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/SubscribeTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteBatchAndWaitTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteBatchAndWaitTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteBatchAndWaitTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteBatchAndWaitTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/WriteTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests.csproj b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests.csproj similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests.csproj rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests.csproj diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/appsettings.test.json b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/appsettings.test.json similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/appsettings.test.json rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/appsettings.test.json diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/xunit.runner.json b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/xunit.runner.json similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/xunit.runner.json rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.IntegrationTests/xunit.runner.json diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ClientMetricsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ClientMetricsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ClientMetricsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ClientMetricsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/CrossStack/CrossStackSerializationTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/CrossStack/CrossStackSerializationTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/CrossStack/CrossStackSerializationTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/CrossStack/CrossStackSerializationTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/QualityExtensionsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/QualityExtensionsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/QualityExtensionsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/QualityExtensionsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/ScadaContractsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/ScadaContractsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/ScadaContractsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/ScadaContractsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/VtqTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/VtqTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/VtqTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Domain/VtqTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeLmxProxyClient.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeLmxProxyClient.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeLmxProxyClient.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeLmxProxyClient.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeScadaService.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeScadaService.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeScadaService.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/FakeScadaService.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/TestableClient.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/TestableClient.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/TestableClient.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/Fakes/TestableClient.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientBuilderTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientBuilderTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientBuilderTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientBuilderTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientConnectionTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientConnectionTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientConnectionTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientConnectionTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientFactoryTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientFactoryTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientFactoryTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientFactoryTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientReadWriteTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientReadWriteTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientReadWriteTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientReadWriteTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientSubscriptionTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientSubscriptionTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientSubscriptionTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/LmxProxyClientSubscriptionTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ServiceCollectionExtensionsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ServiceCollectionExtensionsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ServiceCollectionExtensionsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ServiceCollectionExtensionsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/StreamingExtensionsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/StreamingExtensionsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/StreamingExtensionsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/StreamingExtensionsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/TypedValueConversionTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/TypedValueConversionTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/TypedValueConversionTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/TypedValueConversionTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ZB.MOM.WW.LmxProxy.Client.Tests.csproj b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ZB.MOM.WW.LmxProxy.Client.Tests.csproj similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ZB.MOM.WW.LmxProxy.Client.Tests.csproj rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Client.Tests/ZB.MOM.WW.LmxProxy.Client.Tests.csproj diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Configuration/ConfigurationValidatorTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Configuration/ConfigurationValidatorTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Configuration/ConfigurationValidatorTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Configuration/ConfigurationValidatorTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityCodeMapperTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityCodeMapperTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityCodeMapperTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityCodeMapperTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityExtensionsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityExtensionsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityExtensionsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/QualityExtensionsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/TypedValueConverterTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/TypedValueConverterTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/TypedValueConverterTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Domain/TypedValueConverterTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Health/HealthCheckServiceTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Health/HealthCheckServiceTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Health/HealthCheckServiceTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Health/HealthCheckServiceTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Metrics/PerformanceMetricsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Metrics/PerformanceMetricsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Metrics/PerformanceMetricsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Metrics/PerformanceMetricsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/MxAccess/TypedValueEqualsTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/MxAccess/TypedValueEqualsTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/MxAccess/TypedValueEqualsTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/MxAccess/TypedValueEqualsTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyInterceptorTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyInterceptorTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyInterceptorTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyInterceptorTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyServiceTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyServiceTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyServiceTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Security/ApiKeyServiceTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Sessions/SessionManagerTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Sessions/SessionManagerTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Sessions/SessionManagerTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Sessions/SessionManagerTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Status/StatusReportServiceTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Status/StatusReportServiceTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Status/StatusReportServiceTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Status/StatusReportServiceTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Subscriptions/SubscriptionManagerTests.cs b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Subscriptions/SubscriptionManagerTests.cs similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Subscriptions/SubscriptionManagerTests.cs rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/Subscriptions/SubscriptionManagerTests.cs diff --git a/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/ZB.MOM.WW.LmxProxy.Host.Tests.csproj b/deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/ZB.MOM.WW.LmxProxy.Host.Tests.csproj similarity index 100% rename from lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/ZB.MOM.WW.LmxProxy.Host.Tests.csproj rename to deprecated/lmxproxy/tests/ZB.MOM.WW.LmxProxy.Host.Tests/ZB.MOM.WW.LmxProxy.Host.Tests.csproj diff --git a/windev.md b/deprecated/windev.md similarity index 100% rename from windev.md rename to deprecated/windev.md diff --git a/docs/requirements/Component-ClusterInfrastructure.md b/docs/requirements/Component-ClusterInfrastructure.md index 05c5a34..dd48517 100644 --- a/docs/requirements/Component-ClusterInfrastructure.md +++ b/docs/requirements/Component-ClusterInfrastructure.md @@ -32,7 +32,7 @@ Both central and site clusters. - The Site Runtime Deployment Manager runs as an **Akka.NET cluster singleton** on the active node, owning the full Instance Actor hierarchy. - One standby node receives replicated store-and-forward data and is ready to take over. - Connected to local SQLite databases (store-and-forward buffer, event logs, deployed configurations). -- Connected to machines via data connections (OPC UA, LmxProxy). +- Connected to machines via data connections (OPC UA). ## Failover Behavior diff --git a/docs/requirements/Component-DataConnectionLayer.md b/docs/requirements/Component-DataConnectionLayer.md index b3c74ba..fcf6ee4 100644 --- a/docs/requirements/Component-DataConnectionLayer.md +++ b/docs/requirements/Component-DataConnectionLayer.md @@ -10,7 +10,7 @@ Site clusters only. Central does not interact with machines directly. ## Responsibilities -- Manage data connections defined centrally and deployed to sites as part of artifact deployment (OPC UA servers, LmxProxy endpoints). Data connection definitions are stored in local SQLite after deployment. +- Manage data connections defined centrally and deployed to sites as part of artifact deployment (OPC UA servers). Data connection definitions are stored in local SQLite after deployment. - Establish and maintain connections to data sources based on deployed instance configurations. - Subscribe to tag paths as requested by Instance Actors (based on attribute data source references in the flattened configuration). - Deliver tag value updates to the requesting Instance Actors. @@ -19,7 +19,7 @@ Site clusters only. Central does not interact with machines directly. ## Common Interface -Both OPC UA and LmxProxy implement the same interface: +All protocol adapters implement the same interface: ``` IDataConnection : IAsyncDisposable @@ -38,52 +38,16 @@ IDataConnection : IAsyncDisposable The `Disconnected` event is raised by an adapter when it detects an unexpected connection loss (server offline, network failure, keep-alive timeout). The `DataConnectionActor` subscribes to this event to trigger the reconnection state machine. Additional protocols can be added by implementing this interface. -### Concrete Type Mappings - -| IDataConnection | OPC UA SDK | LmxProxy (`RealLmxProxyClient`) | -|---|---|---| -| `Connect()` | OPC UA session establishment | gRPC `Connect` RPC with `x-api-key` metadata header, server returns `SessionId` | -| `Disconnect()` | Close OPC UA session | gRPC `Disconnect` RPC | -| `Subscribe(tagPath, callback)` | OPC UA Monitored Items | gRPC `Subscribe` server-streaming RPC (`stream VtqMessage`), cancelled via `CancellationTokenSource` | -| `Unsubscribe(id)` | Remove Monitored Item | Cancel the `CancellationTokenSource` for that subscription (stops streaming RPC) | -| `Read(tagPath)` | OPC UA Read | gRPC `Read` RPC → `VtqMessage` → `LmxVtq` | -| `ReadBatch(tagPaths)` | OPC UA Read (multiple nodes) | gRPC `ReadBatch` RPC → `repeated VtqMessage` → `IDictionary` | -| `Write(tagPath, value)` | OPC UA Write | gRPC `Write` RPC (throws on failure) | -| `WriteBatch(values)` | OPC UA Write (multiple nodes) | gRPC `WriteBatch` RPC (throws on failure) | -| `WriteBatchAndWait(...)` | OPC UA Write + poll for confirmation | `WriteBatch` + poll `Read` at 100ms intervals until response value matches or timeout | -| `Status` | OPC UA session state | `IsConnected` — true when `SessionId` is non-empty | -| `Disconnected` | `Session.KeepAlive` event fires with bad `ServiceResult` | gRPC subscription stream ends or throws non-cancellation `RpcException` | - ### Common Value Type -Both protocols produce the same value tuple consumed by Instance Actors. Before the first value update arrives from the DCL, data-sourced attributes are held at **uncertain** quality by the Instance Actor (see Site Runtime — Initialization): +All protocols produce the same value tuple consumed by Instance Actors. Before the first value update arrives from the DCL, data-sourced attributes are held at **uncertain** quality by the Instance Actor (see Site Runtime — Initialization): -| Concept | ScadaLink Design | LmxProxy Wire Format | Local Type | -|---|---|---|---| -| Value container | `TagValue(Value, Quality, Timestamp)` | `VtqMessage { Tag, TypedValue, TimestampUtcTicks, QualityCode }` | `LmxVtq(Value, TimestampUtc, Quality)` — readonly record struct | -| Quality | `QualityCode` enum: Good / Bad / Uncertain | `QualityCode` enum (OPC-style byte values) | Mapped via `IsGood()`/`IsUncertain()`/`IsBad()` extensions | -| Timestamp | `DateTimeOffset` (UTC) | `int64` (DateTime.Ticks, UTC) | `DateTime` (UTC) | -| Value type | `object?` | `TypedValue` (protobuf oneof: bool, int32, int64, float, double, string, datetime, array) | `object?` (native typed from SDK's `Vtq.Value`) | - -### Value Serialization - -**Inbound (reads/subscriptions)**: The LmxProxy SDK returns `Vtq(object? Value, DateTime Timestamp, Quality Quality)`. The adapter's `NormalizeValue` converts complex types (`ArrayValue`, raw arrays) to display strings before passing them into the ScadaLink system. Scalar types (`bool`, `int`, `double`, `string`, `DateTime`) pass through unchanged. - -**Outbound (writes)**: The adapter's `ToTypedValue` converts `object?` values to the SDK's `TypedValue` for native typed writes: - -| Source Type | TypedValue Variant | +| Concept | ScadaLink Design | |---|---| -| `bool` | `BoolValue` | -| `int` | `Int32Value` | -| `long` | `Int64Value` | -| `float` | `FloatValue` | -| `double` | `DoubleValue` | -| `string` | `StringValue` | -| `DateTime` | `DatetimeValue` (UTC ticks) | -| `null` | `StringValue` (empty) | -| fallback | `StringValue` (`.ToString()`) | - -**Array normalization**: `ValueFormatter.FormatDisplayValue` uses reflection to extract typed array contents from LmxProxy `ArrayValue` objects and formats them as comma-separated strings. This ensures downstream code (Instance Actors, debug views, gRPC streaming) never sees opaque SDK types. +| Value container | `TagValue(Value, Quality, Timestamp)` | +| Quality | `QualityCode` enum: Good / Bad / Uncertain | +| Timestamp | `DateTimeOffset` (UTC) | +| Value type | `object?` | ## Supported Protocols @@ -94,36 +58,6 @@ Both protocols produce the same value tuple consumed by Instance Actors. Before - Read/Write via OPC UA Read/Write services with StatusCode-based quality mapping. - Disconnect detection via `Session.KeepAlive` event (see Disconnect Detection Pattern below). -### LmxProxy (Custom Protocol) - -LmxProxy is a gRPC-based protocol for communicating with LMX data servers. The DCL uses the real `ZB.MOM.WW.LmxProxy.Client` SDK library via project reference. `RealLmxProxyClient` is a thin adapter wrapper around the SDK client for testability — it implements a local `ILmxProxyClient` interface while delegating to the SDK. The SDK handles gRPC channel management, retry policies (Polly), keep-alive, and TLS. - -**Transport & Connection**: -- gRPC over HTTP/2 via the SDK's managed channel. -- Default port: **50051**. -- Session-based: `Connect` RPC returns a `SessionId` used for all subsequent operations. -- Keep-alive: Managed by the LmxProxy server's session timeout. The DCL reconnect cycle handles session loss. - -**Authentication & TLS**: -- API key-based authentication sent as `x-api-key` gRPC metadata header on every call. The server's `ApiKeyInterceptor` validates the header before the request reaches the service method. The API key is also included in the `ConnectRequest` body for session-level validation. -- Plain HTTP/2 (no TLS) for current deployments. The server supports TLS when configured. - -**Subscriptions**: -- Server-streaming gRPC (`Subscribe` RPC returns `stream VtqMessage`). -- Configurable sampling interval (default: 0 = on-change). -- Wire format: `VtqMessage` with `TypedValue` (protobuf oneof) for value, `QualityCode` enum for quality — see [lmxproxy_protocol.md](lmxproxy_protocol.md) for wire details. -- Subscription lifetime managed by `CancellationTokenSource` — cancellation stops the streaming RPC. - -**Client Implementation** (`RealLmxProxyClient`): -- Thin adapter over the `ZB.MOM.WW.LmxProxy.Client` SDK. Implements `ILmxProxyClient` for testability. -- `ILmxProxyClientFactory` creates instances configured with host, port, and API key. -- Read values arrive as native typed objects from the SDK's `Vtq.Value` — no string parsing needed. -- Quality mapping: SDK's `Quality` enum (OPC-style byte values) mapped to ScadaLink's `QualityCode` via `IsGood()`/`IsUncertain()`/`IsBad()` extension methods. - -**Proto Source**: The `.proto` file originates from the LmxProxy server repository (`lmx/Proxy/Grpc/Protos/scada.proto` in ScadaBridge). The SDK provides the generated client stubs. - -**Test Infrastructure**: The `infra/lmxfakeproxy/` project provides a fake LmxProxy server that bridges to the OPC UA test server. It implements the full `scada.ScadaService` proto, enabling end-to-end testing of `RealLmxProxyClient` without a Windows LmxProxy deployment. See [test_infra_lmxfakeproxy.md](../test_infra/test_infra_lmxfakeproxy.md) for setup. - ## Endpoint Redundancy Data connections support an optional backup endpoint for automatic failover when the active endpoint becomes unreachable. Both endpoints use the same protocol. @@ -181,16 +115,6 @@ All settings are parsed from the data connection's configuration JSON dictionari | `SecurityMode` | string | `None` | Preferred endpoint security: `None`, `Sign`, or `SignAndEncrypt` | | `AutoAcceptUntrustedCerts` | bool | `true` | Accept untrusted server certificates | -### LmxProxy Settings - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| `Host` | string | `localhost` | LmxProxy server hostname | -| `Port` | int | `50051` | LmxProxy gRPC port | -| `ApiKey` | string | *(none)* | API key for `x-api-key` header authentication | -| `SamplingIntervalMs` | int | `0` | Subscription sampling interval: 0 = on-change, >0 = time-based (ms) | -| `UseTls` | bool | `false` | Use HTTPS instead of plain HTTP/2 for gRPC channel | - ### Shared Settings (appsettings.json) These are configured via `DataConnectionOptions` in `appsettings.json`, not per-connection: @@ -200,7 +124,6 @@ These are configured via `DataConnectionOptions` in `appsettings.json`, not per- | `ReconnectInterval` | 5s | Fixed interval between reconnection attempts | | `TagResolutionRetryInterval` | 10s | Retry interval for unresolved tag paths | | `WriteTimeout` | 30s | Timeout for write operations | -| `LmxProxyKeepAliveInterval` | 30s | Keep-alive ping interval for LmxProxy sessions | ## Subscription Management @@ -235,8 +158,6 @@ Each data connection is managed by a dedicated connection actor that uses the Ak This pattern ensures no messages are lost during connection transitions and is the standard Akka.NET approach for actors with I/O lifecycle dependencies. -**LmxProxy-specific notes**: The `RealLmxProxyClient` holds the `SessionId` returned by the `Connect` RPC and includes it in all subsequent operations. Subscriptions use server-streaming gRPC — a background task reads from the `ResponseStream` and invokes the callback for each `VtqMessage`. When the stream breaks (server offline, network failure), the background task detects the `RpcException` or stream end and invokes the `onStreamError` callback, which triggers the adapter's `Disconnected` event. The DCL actor transitions to **Reconnecting**, pushes bad quality, disposes the client, and retries at the fixed interval. - **OPC UA-specific notes**: The `RealOpcUaClient` uses the OPC Foundation SDK's `Session.KeepAlive` event for proactive disconnect detection. The SDK sends keep-alive requests at the subscription's `KeepAliveCount × PublishingInterval` (default: 10s). When keep-alive fails, the `ConnectionLost` event fires, triggering the same reconnection flow. On reconnection, the DCL re-creates the OPC UA session and subscription, then re-adds all monitored items. ## Connection Lifecycle & Reconnection @@ -254,14 +175,13 @@ Each adapter implements the `IDataConnection.Disconnected` event to proactively **Proactive detection** (server goes offline between operations): - **OPC UA**: The OPC Foundation SDK fires `Session.KeepAlive` events at regular intervals. `RealOpcUaClient` hooks this event; when `ServiceResult.IsBad(e.Status)` (server unreachable, keep-alive timeout), it fires `ConnectionLost`. The `OpcUaDataConnection` adapter translates this into `IDataConnection.Disconnected`. -- **LmxProxy**: gRPC server-streaming subscriptions run in background tasks reading from `ResponseStream`. When the server goes offline, the stream either ends normally (server closed) or throws a non-cancellation `RpcException`. `RealLmxProxyClient` invokes the `onStreamError` callback, which `LmxProxyDataConnection` translates into `IDataConnection.Disconnected`. **Reactive detection** (failure discovered during an operation): - Both adapters wrap `ReadAsync` (and by extension `ReadBatchAsync`) with exception handling. If a read throws a non-cancellation exception, the adapter calls `RaiseDisconnected()` and re-throws. The `DataConnectionActor`'s existing error handling catches the exception while the disconnect event triggers the reconnection state machine. **Event marshalling**: The `DataConnectionActor` subscribes to `_adapter.Disconnected` in `PreStart()`. Since `Disconnected` may fire from a background thread (gRPC stream task, OPC UA keep-alive timer), the handler sends an `AdapterDisconnected` message to `Self`, marshalling the notification onto the actor's message loop. This triggers `BecomeReconnecting()` → bad quality push → retry timer. -**Once-only guard**: Both `LmxProxyDataConnection` and `OpcUaDataConnection` use a `volatile bool _disconnectFired` flag to ensure `RaiseDisconnected()` fires exactly once per connection session. The flag resets on successful reconnection (`ConnectAsync`). +**Once-only guard**: `OpcUaDataConnection` uses a `volatile bool _disconnectFired` flag to ensure `RaiseDisconnected()` fires exactly once per connection session. The flag resets on successful reconnection (`ConnectAsync`). ## Write Failure Handling diff --git a/docs/requirements/HighLevelReqs.md b/docs/requirements/HighLevelReqs.md index 0c45992..661215a 100644 --- a/docs/requirements/HighLevelReqs.md +++ b/docs/requirements/HighLevelReqs.md @@ -60,8 +60,8 @@ - Store-and-forward buffers are persisted to a **local SQLite database on each node** and replicated between nodes via application-level replication (see 1.3). ### 2.4 Data Connection Protocols -- The system supports **OPC UA** and **LmxProxy** (a gRPC-based custom protocol with an existing client SDK). -- Both protocols implement a **common interface** supporting: connect, subscribe to tag paths, receive value updates, and write values. +- The system supports **OPC UA** as the primary data connection protocol. +- All protocols implement a **common interface** supporting: connect, subscribe to tag paths, receive value updates, and write values. - Additional protocols can be added by implementing the common interface. - The Data Connection Layer is a **clean data pipe** — it publishes tag value updates to Instance Actors but performs no evaluation of triggers or alarm conditions. - **Initial attribute quality**: Attributes bound to a data connection start with **uncertain** quality when the Instance Actor initializes. The quality remains uncertain until the first value update is received from the Data Connection Layer. This distinguishes "never received a value" from "received a known-good value" or "connection lost" (bad quality). diff --git a/docs/test_infra/test_infra.md b/docs/test_infra/test_infra.md index 4673b4f..f324bf4 100644 --- a/docs/test_infra/test_infra.md +++ b/docs/test_infra/test_infra.md @@ -50,21 +50,7 @@ Each service has a dedicated document with configuration details, verification s In addition to the local Docker services, the following remote services are available for testing against real AVEVA System Platform hardware. -### LmxProxy v2 (windev — 10.100.0.48) - -Two LmxProxy v2 instances run as Windows services on windev, both connected to the same AVEVA System Platform via MxAccess COM. These provide the primary/backup pair for Data Connection Layer testing. - -| | Instance A | Instance B | -|---|---|---| -| **gRPC Endpoint** | `10.100.0.48:50100` | `10.100.0.48:50101` | -| **HTTP Status** | `http://10.100.0.48:8081` | `http://10.100.0.48:8082` | -| **Service Name** | `ZB.MOM.WW.LmxProxy.Host.V2` | `ZB.MOM.WW.LmxProxy.Host.V2B` | - -API key (ReadWrite): `c4559c7c6acc60a997135c1381162e3c30f4572ece78dd933c1a626e6fd933b4` - -Full details: [`lmxproxy/instances_config.md`](../../lmxproxy/instances_config.md) - -**Primary/backup testing**: The dual OPC UA test servers (ports 50000 and 50010) in local Docker and the dual LmxProxy v2 instances on windev (ports 50100 and 50101) provide primary/backup endpoint pairs for testing Data Connection Layer failover. Use `docker compose stop opcua` to simulate primary failure and verify automatic failover to the backup. +**Primary/backup testing**: The dual OPC UA test servers (ports 50000 and 50010) in local Docker provide primary/backup endpoint pairs for testing Data Connection Layer failover. Use `docker compose stop opcua` to simulate primary failure and verify automatic failover to the backup. ## Connection Strings diff --git a/src/ScadaLink.CentralUI/Components/Pages/Admin/DataConnectionForm.razor b/src/ScadaLink.CentralUI/Components/Pages/Admin/DataConnectionForm.razor index eba03ba..8515e9f 100644 --- a/src/ScadaLink.CentralUI/Components/Pages/Admin/DataConnectionForm.razor +++ b/src/ScadaLink.CentralUI/Components/Pages/Admin/DataConnectionForm.razor @@ -50,7 +50,6 @@ diff --git a/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor b/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor index 7df7140..68e7736 100644 --- a/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor +++ b/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor @@ -94,7 +94,7 @@ @av.AttributeName @ValueFormatter.FormatDisplayValue(av.Value) - @av.Quality + @av.Quality @av.Timestamp.LocalDateTime.ToString("HH:mm:ss.fff") @@ -301,6 +301,14 @@ _alarmStates.Clear(); } + private static string GetQualityBadge(string quality) => quality switch + { + "Good" => "bg-success", + "Bad" => "bg-danger", + "Uncertain" => "bg-warning text-dark", + _ => "bg-secondary" + }; + private static string GetAlarmStateBadge(AlarmState state) => state switch { AlarmState.Active => "bg-danger", diff --git a/src/ScadaLink.DataConnectionLayer/DataConnectionFactory.cs b/src/ScadaLink.DataConnectionLayer/DataConnectionFactory.cs index da487c6..d721453 100644 --- a/src/ScadaLink.DataConnectionLayer/DataConnectionFactory.cs +++ b/src/ScadaLink.DataConnectionLayer/DataConnectionFactory.cs @@ -20,8 +20,6 @@ public class DataConnectionFactory : IDataConnectionFactory // Register built-in protocols RegisterAdapter("OpcUa", details => new OpcUaDataConnection( new RealOpcUaClientFactory(), _loggerFactory.CreateLogger())); - RegisterAdapter("LmxProxy", _ => new LmxProxyDataConnection( - new RealLmxProxyClientFactory(_loggerFactory), _loggerFactory.CreateLogger())); } /// diff --git a/src/ScadaLink.DataConnectionLayer/DataConnectionOptions.cs b/src/ScadaLink.DataConnectionLayer/DataConnectionOptions.cs index 02073e0..57b58b4 100644 --- a/src/ScadaLink.DataConnectionLayer/DataConnectionOptions.cs +++ b/src/ScadaLink.DataConnectionLayer/DataConnectionOptions.cs @@ -13,7 +13,4 @@ public class DataConnectionOptions /// Timeout for synchronous write operations to devices. public TimeSpan WriteTimeout { get; set; } = TimeSpan.FromSeconds(30); - - /// LmxProxy keep-alive interval for gRPC sessions. - public TimeSpan LmxProxyKeepAliveInterval { get; set; } = TimeSpan.FromSeconds(30); } diff --git a/src/ScadaLink.DataConnectionLayer/IDataConnectionFactory.cs b/src/ScadaLink.DataConnectionLayer/IDataConnectionFactory.cs index 12e9fed..abe0969 100644 --- a/src/ScadaLink.DataConnectionLayer/IDataConnectionFactory.cs +++ b/src/ScadaLink.DataConnectionLayer/IDataConnectionFactory.cs @@ -11,7 +11,7 @@ public interface IDataConnectionFactory /// /// Creates an IDataConnection adapter for the specified protocol type. /// - /// Protocol identifier (e.g., "OpcUa", "LmxProxy"). + /// Protocol identifier (e.g., "OpcUa"). /// Protocol-specific connection parameters. /// A configured but not yet connected IDataConnection instance. IDataConnection Create(string protocolType, IDictionary connectionDetails); diff --git a/src/ScadaLink.DataConnectionLayer/ScadaLink.DataConnectionLayer.csproj b/src/ScadaLink.DataConnectionLayer/ScadaLink.DataConnectionLayer.csproj index f5463c7..cf866a6 100644 --- a/src/ScadaLink.DataConnectionLayer/ScadaLink.DataConnectionLayer.csproj +++ b/src/ScadaLink.DataConnectionLayer/ScadaLink.DataConnectionLayer.csproj @@ -22,7 +22,6 @@ - diff --git a/tests/ScadaLink.DataConnectionLayer.Tests/DataConnectionFactoryTests.cs b/tests/ScadaLink.DataConnectionLayer.Tests/DataConnectionFactoryTests.cs index b68d333..1c0496e 100644 --- a/tests/ScadaLink.DataConnectionLayer.Tests/DataConnectionFactoryTests.cs +++ b/tests/ScadaLink.DataConnectionLayer.Tests/DataConnectionFactoryTests.cs @@ -18,16 +18,6 @@ public class DataConnectionFactoryTests Assert.IsType(connection); } - [Fact] - public void Create_LmxProxy_ReturnsLmxProxyAdapter() - { - var factory = new DataConnectionFactory(NullLoggerFactory.Instance); - - var connection = factory.Create("LmxProxy", new Dictionary()); - - Assert.IsType(connection); - } - [Fact] public void Create_CaseInsensitive() {