Table of Contents

BR-ECM — Regole di business del dominio ECM / Documentale (DocCenter)

Regole estratte dal dominio ECM / Documentale di Infocad, ancorate al flusso pilota FLOW-ECM-001 (pubblicazione/archiviazione di un documento DocCenter con delega del file fisico a un ECM esterno pluggable — Alfresco / OpenText / Docs — selezionato a runtime, persistenza dell'ID esterno su Oracle, avanzamento workflow DEM). Sistema: Infocad (Descor), backend Oracle, front-end ASP.NET Web Forms (VB.NET) + provider C#, nessun ORM (stored procedure via DAL Execute*StoredProcedure).

Legenda enforcement: UI = validato solo lato interfaccia/code-behind · BL = logica applicativa (code-behind/BL/provider) · DB = vincolo/logica in stored procedure o constraint/trigger · mixed = più livelli. Legenda confidence: VERIFIED = catena di codice + controprova indipendente (DB o secondo artefatto) · SUPPORTED = evidenza di codice coerente ma un anello non eseguibile/non isolato · INFERRED = dedotto.

Le stored procedure DOC_* citate sono state confermate con lookup read-only su USER_SOURCE dello schema INFOCAD_TEST38 (driver oracledb thin, sola lettura del testo delle procedure — nessun accesso a dati di business, nessuna DML/DDL).


Registro regole

ID Regola (sintesi) Tipo Enforcement Conf.
BR-ECM-001 Il salvataggio su ECM esterno è attivo solo se SaveAttachExtMode = true config-flag BL VERIFIED
BR-ECM-002 Il provider ECM è caricato a runtime da SaveAttachExtDllName (~/bin/{name}.dll{name}.DocManager) config-flag BL VERIFIED
BR-ECM-003 L'aggancio ECM (UserProtocol) è persistito solo se resp.Code = "1" state-transition mixed (UI/BL) VERIFIED
BR-ECM-004 Il codice di successo "1" è mappato in modo diverso da ciascun provider validation BL VERIFIED
BR-ECM-005 Il salvataggio esterno richiede un allegato principale presente validation mixed (UI/BL) VERIFIED
BR-ECM-006 Per ogni allegato secondario, EXTERNAL_ID è salvato solo se il suo save torna "1" state-transition mixed VERIFIED
BR-ECM-007 L'ID esterno è persistito in DOCS_DOCUMENT.USER_PROTOCOL via DOC_UPDATEDOCUMENT calculation/persistence DB VERIFIED
BR-ECM-008 La pubblicazione avanza il workflow DEM (activity.Run + ElementMessage.Create) state-transition BL SUPPORTED
BR-ECM-009 Con SaveAttachExtMode = false il BLOB resta in Infocad, nessuna chiamata ECM config-flag BL VERIFIED
BR-ECM-010 L'endpoint ECM è preso dalla chiave URL nell'appSettings del .config del provider config-flag BL VERIFIED
BR-ECM-011 Il provider Docs decodifica il nome file per posizione fissa (Sigla/Foglio/Sottovoce/Microvoce) customer-specific BL VERIFIED
BR-ECM-012 La conversione MIME è provider-specifica (OpenText sì, Alfresco no, Docs base64) calculation BL VERIFIED
BR-ECM-013 I provider aprono il servizio con quote/buffer 2147483647 (Int32.MaxValue) config/magic BL VERIFIED
BR-ECM-014 Il provider Docs non restituisce ID → USER_PROTOCOL resta stringa vuota data-integrity BL VERIFIED
BR-ECM-015 Su errore ECM/DAL il documento resta nello stato precedente (no pubblicazione) error-handling/state mixed (UI/BL) VERIFIED
BR-ECM-016 Categoria documentale obbligatoria se DocCategoryMandatory = true config-flag/validation UI-only VERIFIED
BR-ECM-017 Non è selezionabile una categoria padre (deve essere foglia) validation UI-only VERIFIED
BR-ECM-018 In stato workflow 24 la UserVersion deve essere modificata validation/state UI-only VERIFIED
BR-ECM-019 L'update documento è replace-all dei tag (DELETE totale + re-INSERT PIDTAGLIST) state-transition DB VERIFIED
BR-ECM-020 Notifica mail eseguita solo se MailingType <> "none" config-flag BL VERIFIED
BR-ECM-021 SaveAttachExtMode richiede anche CONTROLURL = ExternalDocs/DocumentPublishExtControl.ascx sull'activity Pubblica config-flag BL SUPPORTED
BR-ECM-022 MainConnection: PROD INFOCAD_BIM (commentato) vs TEST INFOCAD_TEST38 attivo config BL VERIFIED
BR-ECM-023 Doppia definizione del contratto IDocManager (VB attivo String vs C# legacy int) config/tech-debt BL SUPPORTED
BR-ECM-024 Lo svuotamento fisico del BLOB locale dopo invio ECM è previsto ma commentato (doppia persistenza) data-integrity BL VERIFIED

Dettaglio regole

BR-ECM-001 — Attivazione salvataggio su ECM esterno

  • Regola: la delega del file fisico a un ECM esterno avviene solo se il flag di configurazione DocCenter/Settings/SaveAttachExtMode è true; altrimenti il documento è gestito interamente in Infocad.
  • Tipo: config-flag · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:365 (Dim SaveAttachExtMode As Boolean = CBool(...SaveAttachExtMode)), :368 (If SaveAttachExtMode Then); property CommonWeb/DocCenter/Configuration/Settings.vb:236; default Web.config:381 (<SaveAttachExtMode value="true"/>).
  • Note: feature-flag nascosto in Web.config, valore di default PROD-like true.

BR-ECM-002 — Selezione provider ECM a runtime

  • Regola: il provider ECM è deciso a runtime dal valore di SaveAttachExtDllName. Il codice carica ~/bin/{SaveAttachExtDllName}.dll via Assembly.LoadFrom e istanzia la classe {SaveAttachExtDllName}.DocManager con cast a IDocManager. Cambiare provider (Alfresco/Opentext/Docs) non richiede ricompilazione del chiamante.
  • Tipo: config-flag · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:286-294:289 legge SaveAttachExtDllName, :292 Assembly.LoadFrom(Server.MapPath("~/bin/{0}.dll")), :294 asb.CreateInstance("{0}.DocManager") cast IDocManager; property Settings.vb:242; default Web.config:382 (ExternalDocSave.Opentext).
  • Note: convenzione di naming hard-coded ({name} = nome DLL = namespace = prefisso classe .DocManager); un nome errato in config provoca eccezione a runtime (nessuna validazione preventiva).

BR-ECM-003 — Persistenza aggancio ECM condizionata a Code = "1"

  • Regola: l'ID restituito dall'ECM (resp.Id) è persistito in doc.UserProtocol e salvato su DB solo se resp.Code = "1". Altrimenti si mostra resp.Message e non avviene né l'update né la pubblicazione.
  • Tipo: state-transition · Enforcement: mixed (UI/BL) · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:374 (If resp.Code = "1" Then), :376 (doc.UserProtocol = usrProtocol), :377 (docCtrl.Update(doc)), :406-407 (ramo else ShowMessage(resp.Message)).
  • Note: magic string "1" come codice di successo (vedi BR-ECM-004).

BR-ECM-004 — Contratto del codice di successo divergente tra provider

  • Regola: il chiamante confronta sempre resp.Code = "1", ma i tre provider producono quel codice con logiche diverse:
    • OpenText: passa result["code"] del servizio così com'è (atteso "1").
    • Alfresco: se result["code"] == "OK"Code = "1", altrimenti Code = "".
    • Docs: se result["Esito"] contiene "Succeded"Code = "1", altrimenti Code = "0".
  • Tipo: validation · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: OpenText ExternalDocSave.Opentext/DocManager.cs:145-147; Alfresco ExternalDocSave.Alfresco/DocManager.cs:69-74 (if (code == "OK") res.Code = "1"); Docs ExternalDocSave.Docs/DocManager.cs:59-65 (result["Esito"].ToString().Contains("Succeded")).
  • Note: contratto fragile a stringhe ("1", "OK", "Succeded" — refuso di "Succeeded" incluso). Rischio: qualsiasi variazione della stringa lato servizio spezza l'aggancio silenziosamente.

BR-ECM-005 — Allegato principale obbligatorio per il save esterno

  • Regola: il salvataggio esterno richiede un allegato principale valorizzato; se doc.Attachment è nullo o senza FileName viene lanciata Exception("Allegato mancante!").
  • Tipo: validation · Enforcement: mixed (UI/BL) · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:237 (If doc.Attachment IsNot Nothing AndAlso Not String.IsNullOrEmpty(doc.Attachment.FileName)), :254 (Throw New Exception("Allegato mancante!")).
  • Note: messaggio hard-coded in italiano (non da resource dictionary).

BR-ECM-006 — Allegati secondari: EXTERNAL_ID salvato solo su esito positivo

  • Regola: se doc.NumAttach > 0, ogni allegato secondario è inviato singolarmente all'ECM; l'ExternalID viene persistito (DOC_UPDATEATTACHMENTDOC) solo se il save del singolo allegato torna "1".
  • Tipo: state-transition · Enforcement: mixed · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:387-404 (If SaveExternalSecondaryAttach(...) = "1"attachment.ExternalID = externalIddocCtrl.UpdateAttachmentDoc(...)); DAL Document_DAL.vb:2859 (param PEXTERNALID); controprova DB: DOC_UPDATEATTACHMENTDOCUPDATE DOCS_ATTACHMENT_DOCUMENT SET ... EXTERNAL_ID = PEXTERNALID WHERE ID_ATTACHDOC = PIDATTACHDOC (letto da USER_SOURCE di INFOCAD_TEST38).

BR-ECM-007 — Persistenza ID esterno in DOCS_DOCUMENT.USER_PROTOCOL

  • Regola: l'ID esterno del documento è persistito nella colonna USER_PROTOCOL di DOCS_DOCUMENT tramite DOC_UPDATEDOCUMENT (param IN PUSERPROTOCOL).
  • Tipo: calculation/persistence · Enforcement: DB · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DAL Document_DAL.vb:1438 (OracleParameter("PUSERPROTOCOL", ...)), :1500 (ExecuteNonQueryStoredProcedure("DOC_UPDATEDOCUMENT")); controprova DB: DOC_UPDATEDOCUMENTUPDATE DOCS_DOCUMENT SET ... USER_PROTOCOL = PUSERPROTOCOL, USER_VERSION = PUSERVERSION ... (letto da USER_SOURCE).
  • Note: la colonna riusa il campo "protocollo utente" per contenere l'ID dell'ECM — accoppiamento semantico non evidente dal nome.

BR-ECM-008 — Pubblicazione = avanzamento workflow DEM

  • Regola: PublishDocument() avanza lo stato del documento nel motore DEM (activity.Run(idElement, WorkFlowID, contactId)) e crea un messaggio elemento (DEM.ElementMessage.Create(...)). Viene eseguito in entrambi i rami (con o senza ECM esterno).
  • Tipo: state-transition · Enforcement: BL · Confidence: SUPPORTED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:214-230 (PublishDocumentRunWorkFlow), :405/:410 (chiamata nei due rami); DocumentBase.vb:458-493 (RunWorkFlow:473 activity.Run, :484 ElementMessage.Create).
  • Note: le tabelle DEM toccate da activity.Run/ElementMessage.Create non sono tracciate a livello di colonna in questo flusso (side effect).

BR-ECM-009 — Modalità interna (BLOB in Infocad)

  • Regola: con SaveAttachExtMode = false non c'è alcuna chiamata all'ECM esterno; il file resta come BLOB in Infocad e si esegue direttamente PublishDocument().
  • Tipo: config-flag · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:409-411 (ramo ElsePublishDocument()).

BR-ECM-010 — Endpoint ECM da .config del provider

  • Regola: ogni provider legge l'URL del servizio remoto dalla chiave URL dell'appSettings del proprio file .dll.config, non dal Web.config dell'applicazione.
  • Tipo: config-flag · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: ExternalDocSave.Opentext/DocManager.cs:170-186 (LoadServicemyDllConfigAppSettings.Settings["URL"].Value, GetConfigSection via OpenExeConfiguration); pattern identico Alfresco :97-113 e Docs :83-99.
  • Valori hard-coded per ambiente: OpenText ExternalDocSave.OpenText.dll.config = http://infocadintegration-openfiber-test.infocad.fm/.../OpenTextService.svc (URL di test OpenFiber); Alfresco/Docs puntano a localhost/InfocadIntegrationWS_DEV/... (ambiente DEV).
  • Note: endpoint di test/dev committati nel repo → rischio di puntare all'ambiente sbagliato in PROD.

BR-ECM-011 — Provider Docs: decodifica posizionale del nome file (MondoConv)

  • Regola: il provider Docs non tratta il nome file come opaco ma lo decodifica per posizione fissa in metadati: Sigla = char 0-4, Foglio = char 6-7, Sottovoce = char 9-10, Microvoce = char 12-13, NomeFile = da char 15. Esempio di codifica atteso: MSSV1_23_03_05 Staffe insegna ...pdf.
  • Tipo: customer-specific · Enforcement: BL · Confidence: VERIFIED · customer_specific: true
  • Evidenza: ExternalDocSave.Docs/DocManager.cs:42-53 (docNameWithEstension.Substring(0,5), Substring(6,2), Substring(9,2), Substring(12,2), Substring(15)); endpoint .../WebServices/MondoConv/DocsService.svc.
  • Note: magic numbers di parsing; un nome file più corto del previsto provoca ArgumentOutOfRangeException e fa fallire il save. Variante specifica del cliente MondoConv.

BR-ECM-012 — Conversione MIME provider-specifica

  • Regola: la gestione del MIME type differisce per provider: OpenText converte l'estensione via MimeTypeMap.GetMimeType(...) prima di inviare; Alfresco non converte (riga commentata); Docs ignora il MIME e invia il body come stringa base64.
  • Tipo: calculation · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: OpenText DocManager.cs:138 (mimeType = MimeTypeMap.GetMimeType(mimeType)); Alfresco DocManager.cs:63 (//mimeType = MimeTypeMap.GetMimeType(mimeType); commentato); Docs DocManager.cs:53 (data["FileBody"] = Convert.ToBase64String(document, ...)).

BR-ECM-013 — Quote di servizio a Int32.MaxValue

  • Regola: tutti i provider aprono il canale WCF con tre quote/buffer impostate al valore massimo 2147483647 (Int32.MaxValue).
  • Tipo: config/magic · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: ExternalDocSave.Opentext/DocManager.cs:175 (serviceFactory.GetService(serviceUrl, 2147483647, 2147483647, 2147483647)); identico in Alfresco :102 e Docs :88.
  • Note: magic number ripetuto; nessuna limitazione effettiva sulla dimensione del messaggio.

BR-ECM-014 — Provider Docs non restituisce ID esterno

  • Regola: il provider Docs imposta esplicitamente res.Id = "" perché il servizio remoto non ritorna un identificativo del documento creato. Di conseguenza, per il provider Docs, USER_PROTOCOL viene salvato come stringa vuota anche a fronte di un salvataggio riuscito.
  • Tipo: data-integrity · Enforcement: BL · Confidence: VERIFIED · customer_specific: true
  • Evidenza: ExternalDocSave.Docs/DocManager.cs:56 (res.Id = ""; // Questo servizio non torna identificativo).
  • Note: rischio — l'aggancio logico (BR-ECM-007) è di fatto vuoto per Docs; il documento risulta pubblicato ma senza chiave di ricongiungimento verso l'ECM.

BR-ECM-015 — Atomicità/rollback logico su errore

  • Regola: l'intera orchestrazione di btnSalva_Click è in un Try/Catch; su qualsiasi eccezione (ECM o DAL) si mostra ex.Message e si registra InfocadTraceWrapper.CreateError(...); il documento non avanza di stato e resta nello stato precedente.
  • Tipo: error-handling/state · Enforcement: mixed (UI/BL) · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:367 (Try), :418-421 (Catch ... ShowMessage(ex.Message) + CreateError).
  • Note: non esiste transazione distribuita ECM↔DB: se l'ECM salva ma il successivo docCtrl.Update fallisce, il file resta orfano sull'ECM senza aggancio (non compensato).

BR-ECM-016 — Categoria documentale obbligatoria (config)

  • Regola: se DocCategoryMandatory = true, la categoria del documento è obbligatoria; in assenza si aggiunge un errore di validazione (CategoryRequiredString) e si blocca il salvataggio.
  • Tipo: config-flag/validation · Enforcement: UI-only · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentUpdateControlInfo.ascx.vb:351-356 (validazione), :725 (asterisco su label); default Web.config:362 (<DocCategoryMandatory value="true"/>); property Settings.vb:153. Enforcement analogo in DocumentDetailControl.ascx.vb:513, DocumentEditControl.ascx.vb:538, DocumentInsertControlNew.ascx.vb:345.
  • Note: regola solo UI — nessun vincolo NOT NULL su ID_CATEGORY (la DAL passa DBNull.Value se categoria assente, Document_DAL.vb:1465-1471). Un percorso che salti la validazione UI può inserire documenti senza categoria.

BR-ECM-017 — Categoria: solo nodi foglia

  • Regola: non è possibile selezionare una categoria padre; se la categoria selezionata ha figli, si genera errore alertParentCategoryNoSelected.
  • Tipo: validation · Enforcement: UI-only · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentUpdateControlInfo.ascx.vb:345-347 (If ... SelectedNode IsNot Nothing AndAlso childList.Count() > 0 Then AddValidationError(...)).

BR-ECM-018 — Cambio versione utente obbligato nello stato 24

  • Regola: se il documento è nello stato di workflow 24 e la UserVersion non è stata cambiata rispetto al corrente, la validazione fallisce con messaggio "Modifcare la versione utente!".
  • Tipo: validation/state-transition · Enforcement: UI-only · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentUpdateControlInfo.ascx.vb:357-360 (If Me.WorkFlowIDState = 24 AndAlso CurrentDocument.UserVersion = UserVersion Then AddValidationError("Modifcare la versione utente!")).
  • Note: magic number 24 (id di stato workflow hard-coded) + messaggio hard-coded con refuso ("Modifcare"). Regola solo UI.

BR-ECM-019 — Update documento = replace-all dei tag

  • Regola: l'aggiornamento di un documento sostituisce integralmente i tag: DOC_UPDATEDOCUMENT invoca DOC_REMOVEALLTAGSFROMDOCUMENT (rimozione totale) e poi DOC_ADDTAGSTODOCUMENT con la lista PIDTAGLIST passata dal chiamante.
  • Tipo: state-transition · Enforcement: DB · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DAL Document_DAL.vb param PIDTAGLIST (OracleCollectionType.PLSQLAssociativeArray); controprova DB (USER_SOURCE, INFOCAD_TEST38): DOC_REMOVEALLTAGSFROMDOCUMENTDELETE ... DOCS_TAG_DOCUMENT; DOC_ADDTAGSTODOCUMENTINSERT INTO DOCS_TAG_DOCUMENT; entrambe richiamate da DOC_UPDATEDOCUMENT.
  • Note: regola solo DB (logica interna alle procedure): un tag non presente nella lista passata dal client viene perso; nessun merge.

BR-ECM-020 — Notifica mail condizionata

  • Regola: al termine del salvataggio, la notifica (ProcessAlertSystem) è eseguita solo se MailingType <> "none".
  • Tipo: config-flag · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:414-416 (If ...MailingType <> "none" Then ProcessAlertSystem()); property Settings.vb:135.

BR-ECM-021 — Accoppiamento SaveAttachExtMode ↔ CONTROLURL dell'activity Pubblica

  • Regola: per attivare correttamente il salvataggio esterno non basta il flag SaveAttachExtMode; occorre anche impostare CONTROLURL = ExternalDocs/DocumentPublishExtControl.ascx sull'activity "Pubblica" di ogni workflow documentale.
  • Tipo: config-flag · Enforcement: BL · Confidence: SUPPORTED · customer_specific: false
  • Evidenza: commento di configurazione Web.config:379-380 (immediatamente sopra <SaveAttachExtMode>): "Salva allegato in un repository esterno tramite un'apposita DLL unitamente al flag va impostato la CONTROLURL = ExternalDocs/DocumentPublishExtControl.ascx sull'activity Pubblica di ogni Workflow documentale".
  • Note: dipendenza di configurazione nascosta documentata solo in un commento; la mancata configurazione dell'activity porta a comportamento incoerente (control di pubblicazione non-ext).

BR-ECM-022 — Connessione DB del Documentale (PROD vs TEST)

  • Regola: il Documentale usa la connection string MainConnection. Nel sample Web.config la variante PROD punta allo schema INFOCAD_BIM (attualmente commentata) mentre l'ambiente attivo è INFOCAD_TEST38.
  • Tipo: config · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: Web.config:200-206 (MainConnection con User Id=INFOCAD_BIM in commento; ConnectionString attiva con User Id=INFOCAD_TEST38). (Credenziali presenti in chiaro nel file — non riportate qui.)
  • Note: rischio ambiente — schema di destinazione differente tra config commentata e attiva; password in chiaro nel Web.config.

BR-ECM-023 — Doppia definizione del contratto IDocManager

  • Regola: esistono due definizioni del contratto provider: quella VB attiva a runtime Descor.Documents.DocumentInterface.IDocManager (con Response.Code/Id di tipo String, DownloadDocument(String)) e una C# legacy ExternalDocSave.Interface.IDocManager (con int), referenziata solo in using commentati nei provider.
  • Tipo: config/tech-debt · Enforcement: BL · Confidence: SUPPORTED · customer_specific: false
  • Evidenza: contratto attivo InfocadServer/DocumentInterface/DAO/IDocManager.vb:3-16; DTO DocumentSharedObjects/Objects/Response.vb:7-8 (Code/Id As String); provider OpenText DocManager.cs:5 usa Descor.Documents.DocumentInterface, :12 //using ExternalDocSave.Interface; commentato.
  • Note: ambiguità di manutenzione; da confermare quale assembly IDocManager sia effettivamente compilato in ~/bin.

BR-ECM-024 — Svuotamento BLOB locale post-ECM previsto ma disabilitato

  • Regola: il codice prevede lo svuotamento fisico del BLOB locale (allegato principale e secondari) dopo l'invio all'ECM esterno, ma i relativi blocchi sono commentati; quindi il file rimane persistito sia sull'ECM sia in DOCS_ATTACHMENT/DOCS_ATTACHMENT_DOCUMENT (doppia persistenza).
  • Tipo: data-integrity · Enforcement: BL · Confidence: VERIFIED · customer_specific: false
  • Evidenza: DocumentPublishControl.ascx.vb:379-383 (blocco commentato svuotamento allegato principale), :393-394 (blocco commentato allegati secondari).
  • Note: la delega al ECM esterno non libera lo storage Oracle; occupazione doppia dei byte.

Rischi trasversali (sintesi)

  • Regole solo-UI (bypassabili da percorsi non-UI o API): BR-ECM-016, BR-ECM-017, BR-ECM-018.
  • Regole solo-DB (logica interna alle procedure, non visibile lato codice): BR-ECM-019 (replace-all tag), parte di BR-ECM-007.
  • Magic number / stringhe hard-coded: "1"/"OK"/"Succeded" (BR-ECM-004), substring 0/5/6/9/12/15 (BR-ECM-011), 2147483647 (BR-ECM-013), stato workflow 24 (BR-ECM-018).
  • Variabili cliente-specifiche: BR-ECM-011 e BR-ECM-014 (provider Docs / MondoConv).
  • Feature-flag / dipendenze nascoste: BR-ECM-001, BR-ECM-002, BR-ECM-021 (accoppiamento CONTROLURL).
  • Integrità dati: BR-ECM-014 (id vuoto), BR-ECM-015 (nessuna transazione ECM↔DB), BR-ECM-024 (doppia persistenza).
  • Ambiente: BR-ECM-010 (endpoint test/dev committati), BR-ECM-022 (schema PROD vs TEST, credenziali in chiaro).

Domande aperte

  • Quale assembly IDocManager è effettivamente compilato in ~/bin (VB vs C# legacy)? (BR-ECM-023)
  • Schema effettivo di MainConnection in PROD (INFOCAD_BIM?) vs TEST (INFOCAD_TEST38). (BR-ECM-022)
  • Tabelle DEM toccate da activity.Run/ElementMessage.Create durante la pubblicazione (BR-ECM-008).
  • Comportamento reale del provider Docs quando USER_PROTOCOL resta vuoto: come si ricongiunge il documento all'ECM? (BR-ECM-014)