TASK-CFG-001 — Config / Integration / Deployment Inventory

  • Worker: config-integration
  • Date: 2026-07-21
  • Repos: /Users/leonardo/GitHub/Documentation/InfocadServer, /Users/leonardo/GitHub/Documentation/InfocadWeb
  • Safety: READ-ONLY. No source modified, no build/run, no commit/push. Secret values never recorded — passwords masked ***. bin/obj/packages/node_modules/.git excluded.
  • Ground truth: Backend is Oracle (ODP.NET unmanaged Oracle.DataAccess.Client + stored procedures, no ORM). No SQL Server / dbo / T-SQL.
  • Machine output: docs/_generated/inventory-config-integration.json

1. Configuration files

Scanned patterns web.config / app.config / *.exe.config / Web.*.config (also App.config, web.*.config). ~70 matched under source (repo total 85 .config incl. transform variants).

Declare <connectionStrings> (evidence: grep -l "<connectionStrings")

InfocadServer: ECMServer/app.config, IEMServer/app.config, IEMService/App.config, InfocadServer/app.config, WindowService/app.config. InfocadWeb: WebMachine/CASSANDRA/Web.config, WebMachine/DEM/app.config (empty <connectionStrings/>), WebMachine/RequestCenter/app.config (empty), InfocadIntegration/.../InfocadIntegrationWS/Web.config, all EXELoaders/TicketLoader*, Process{Console,Core,Service}, Queue{Console,Core,Service}, Scheduler{Console,Core,Service}, ServiceJob.LEONARDO, FS/DataAccessLayer, TI/DataAccessLayer.

DEM/app.config and RequestCenter/app.config ship with an empty <connectionStrings/> — populated at deploy time (their .dll.config is also on the deploy exclude list, see §4).

Declare Oracle Membership/Role providers (OracleMembershipProvider / OracleRoleProvider)

InfocadServer/{InfocadServer,IEMServer,IEMService,ECMServer,WindowService} app.configs + InfocadIntegration/EXELoaders/{TicketLoaderCUT,TicketLoaderPOLIMI,TicketLoaderSOF,TicketLoaderSOFCAREGGI} + ServiceJob.LEONARDO.

Web tier auth: CASSANDRA/Web.config has no <membership>/<roleManager> sections. The web tier authenticates via a custom InfocadAuthenticationModule (registered httpModule) plus pluggable ExternalAuth SSO. The Oracle ASP.NET providers live in the server-side service configs and integration loaders.

2. Connection-string NAMES (values NOT captured)

providerName="Oracle.DataAccess.Client" throughout.

  • Server / shared: MainConnection, RequestCenterConnection, DEMConnection, OracleProvidersDB (ASP.NET membership/roles).
  • Web tier (CASSANDRA): ConnectionString (Infocad core), RequestCenter, DEMdata.
  • Integration loaders: INFOCAD_CS, RC_CS, DEM_CS, Oracle, OracleFS, OracleTI, plus reused ConnectionString/RequestCenter/DEMdata and TicketLoader_SINERGIETV.My.MySettings.Exp2INFOCADConnectionString.
  • Non-DB add entries seen inside <connectionStrings>: xls/xlsx (OleDb DbProviderFactories, not databases).

3. Connection-rewrite mechanism (deploy-time)

InfocadServer/ConnectionsServiceProgram.cs (Descor.Applications.ConnectionsService). Evidence: Program.cs:22-116.

  1. Sets APP_CONFIG_FILE = <install>/IEMServer.exe.config (hardcoded, line 26) and ResetConfigMechanism() clears cached ConfigurationManager static state by reflection.
  2. Reads <install>/Connections/connections.xml (Connection > child nodes name/connectionString/providerName; xls added without provider) and service.xml (serialized List<string>; [0]=service name). Aborts if service name contains windowservice.
  3. RemoveConnectionStrings() clears <connectionStrings>, then AddConnectionStrings() re-adds each; derives applicationName from the MainConnection value (2nd ;-token) and removes + re-adds OracleMembershipProvider (system.web/membership) and OracleRoleProvider (system.web/roleManager) rewriting their applicationName; saves the .exe.config.
  4. Deletes connections.xml, sleeps 10s, then RestartService()Process.Start(<install>/Connections/restartserver.bat).

connections.xml, service.xml, restartserver.bat are deploy-time drops — not in the repo (searched; only an unrelated restart.png exists). StopService/StartService via ServiceController are present but commented; restart is delegated to restartserver.bat.

4. Deployment artifacts

  • Exclude lists (used by copy/robocopy deploy):
    • InfocadServer/InfocadServer.ExcludeFiles.txt: *Controllers.dll, InfocadServer.exe.config, IEMServer.exe.config, Descor.IEM.IEMDAL.dll.config, ECMServer.exe.config, Oracle.DataAccess.dll, Net8.0.
    • InfocadWeb/WebMachine/WebMachine.ExcludeDir.txt: \Bin\, \DotPlugin\, \DescorBlack\, \DescorBluPlain\, \DescorWhite\, .DataAccess.dll.
    • InfocadWeb/WebMachine/WebMachine.ExcludeFiles.txt: .xml, .config, DEM.dll.config, RequestCenter.dll.config, Cassandra.dll.config, Oracle.DataAccess.dll, Parametric, Descor.Reporting, \DotPlugin\.
    • Rationale: configs + Oracle client are excluded so per-environment target configs / Oracle install are preserved; ConnectionsService then rewrites connection strings in place.
  • .bat: only CASSANDRA/Authentication/SSOSaml/Schemas/RunXsd.bat (xsd.exe codegen helper — not deploy).
  • .ps1: none. Publish profiles (*.pubxml): none.
  • TESTIWS/*.exclude are Visual Studio "exclude from project" markers, not deploy lists.

5. Background / hosting

InfocadServer Windows services (ServiceBase): InfocadServer (InfocadServer.vb), IEMServer (IEMServer.vb; also the ConnectionsService rewrite target), IEMService, ECMServer (ECMServer.cs), WindowService (excluded from rewrite), GlobalManager, ConnectionsService.

JobScheduler: InfocadServer/JobScheduler uses Quartz.NETquartz.config, quartz_jobs.xml, QuartzServer.cs/QuartzServerFactory.cs/IQuartzServer.cs, Program.cs, SampleJob.cs. Per-domain Scheduler/ folders also exist under GlobalInterface, GlobalManager, ReportManager, PropertyManager, DocumentBL.

InfocadIntegration services: app triads Process{Console,Core,Service}, Queue{Console,Core,Service}, Scheduler{Console,Core,Service} (Service = ServiceBase); ServiceJob.{ASE,CAI,LEONARDO,RequestCenter,UCSC} (ServiceBase), ServiceJob.CUT; TicketLoaderMBDA runs as a LoaderService : ServiceBase.

6. Integration families

Family Interface project Implementations
ExternalAuth Customizations/ExternalAuth.Interface (IAuthManager, IAuthInfo) ExternalAuth.BPER (AuthManager), CustomAuth.CUT (AuthManager); web hook CASSANDRA/Authentication/ExternalAuth + SSOSaml
ExternalDocSave Customizations/ExternalDocSave.Interface (IDocManager) .Alfresco, .Opentext, .Docs (each DocManager : IDocManager)
TicketLoader InfocadIntegration/.../EXELoaders CUT, MBDA, POLIMI, SOF, SOFCAREGGI, _SINERGIETV, WebApiIntegration
InfocadIntegration apps InfocadIntegration.sln (51 projects) Process/Queue/Scheduler triads + BaseIntegration + FS/TI (BL/DAL/EntityLayer) + InfocadIntegrationWS + IntegrationTester/TestUnits + 14 EntityLayer<Customer>
IEM / ECM Server tier: IEMServer/IEMService/ECMServer (+ BL/DAL/Controllers/Interface/SharedObjects, IEM has *XNET net8 variants). Web: WebMachine/IEM (IEM.sln), WebMachine/ECM (ECM.sln), CASSANDRA/IEMWeb

EntityLayer<Customer>: BDI, BPER, BS, CAI, IREN, ISTAT, MIT, NIAGARA, OF, Request, Sicuritalia, TrentinoSvil, Unicatt, FSSU.

7. InfocadServer/SQLScript/ (102 .sql across both repos; not executed)

SQLScript/ root:

  • CLIENTI/BPER/ — per-customer (BPER) DDL: TABLE/ (16, DS_SCAMBIO_*, DS_CANONI_ALL, DS_UO, DS_SETTINGS, DS_COMUNI…), TRIGGER/ (22, TRG_* codice/stato lock + validation), PACKAGE/ (DATA_IMPORT.sql, EXTERNAL_INTEGRATION.sql).
  • UTILITY/ANALISI INDICI.sql (index analysis), CONSTRAINTS Enable-Disable ALL.sql, DEM_FULLTEXT.sql.
  • VERSION T0/Schedule/SCRIPT.sql, Create/Tabella Maint_OJ_PROCESS.sql, Clean ODL/ODL_DOPPI - {1 CREATE_STRUCTURE, 2 FIND_REAL_CLONED, 3 RUN_CLEAN}.sql (dedup duplicate work-orders).

SQL shipped outside SQLScript/ (module bootstrap/migrations): RequestCenter.DAL.Oracle/PLSQL/ (full schema: ALLDB/ALLPackages/ALLProcedures/ALLProgrammability/ALLSequences/ALLTables/ALLTriggers + Data/*.sql seed + resetDB.sql + EnableIndexPartition.sql), DEM/DAL.OracleODP/PLSQL/ (AllProgrammability, AllTables), TicketLoaderPOLIMI/DB_SCRIPTS/ (OTRS interface), TicketLoaderSOFCAREGGI/Scripts/ (5 timestamped migrations), ServiceJob.LEONARDO/DB_script/ (11 numbered scripts), and DEFAULTVIEWEROPTIONS.sql copies.

8. Security flags

  • CASSANDRA/Web.config commits LIVE plaintext Oracle credentials (active + many commented per-env variants: *_TEST38, *_TESTDEMO, *_GPE, *_TESTFS, *_TESTPMO, and INFOCAD_BIM/REQUESTCENTER_BIM/DEM_BIM). Values masked in evidence.
  • Several integration app.configs embed Oracle credentials inline. Deploy excludes .config and ConnectionsService rewrites .exe.config, but committed dev/test credentials persist in git history.

Confidence

  • Verified (mechanical): config file list, connection-string names, provider-config list, ConnectionsService flow (read Program.cs), exclude lists (read verbatim), service/ServiceJob projects, integration family interfaces + implementations, SQLScript inventory.
  • Inferred: deploy uses copy/robocopy honoring the exclude lists (the lists exist; the copy driver script itself is not committed); restartserver.bat/connections.xml/service.xml shape (from code, files are deploy-time).
  • Unknown: exact deploy orchestrator/CI (none in repo — matches project CLAUDE.md "no CI"); runtime membership provider wiring for the web tier beyond the custom InfocadAuthenticationModule.