TitleTAG

Punti di attenzione sul RENAME

Per il caso di RENAME è stato riscontrato un comportamento particolare e che potrebbe causare la creazione di log di errori (falsi positivi): vi segnaliamo la casistica in attesa di trovare una soluzione. **Gestione dell'integrità referenziale in caso di RENAME** La gestione del RENAME è particolare, in quanto oltre alla normale transazione e al codice presente nei trigger OnRename, che sono normalmente gestiti da Sprinkler, Dynamics 365 Business Central esegue applicativamente anche tutte le operazioni di gestione dell'integrità referenziale: per esempio, se viene effettuato il rename della chiave di un Cliente, vengono aggiornati applicativamente i campi referenziati degli ordini, delle fatture e così via. Purtroppo questa gestione ha un effetto collaterale per il metodo di rilevamento delle modifiche utilizzato da Sprinkler: in particolare, Sprinkler rileva e segnala al sistema remoto sia l'operazione di RENAME (come prima transazione) sia tutte le conseguenti operazioni di MODIFY o RENAME sugli altri record, che non sono distinguibili dalle normali operazioni di MODIFY o RENAME, come ulteriori transazioni. Caso RENAME + MODIFY: il sistema di destinazione riceve una segnalazione di RENAME e la replica direttamente, scatenando già automaticamente la fase di gestione dell'integrità referenziale: i successivi MODIFY saranno a questo punto inutili, ma non saranno comunque segnalati come errore. Caso RENAME + RENAME: si genera un problema quando il campo modificato è referenziato da una chiave. Pensiamo per esempio di avere in replica sia la tabella [Customer] che la tabella [Customer Bank Accont]: in questo caso, la chiave [No.] di [Customer] è referenziata dal campo [Customer No.] della chiave di [Customer Bank Account]. Se rinominiamo un Cliente, quando il sistema Target applicherà il primo RENAME effettuerà in automatico anche un RENAME delle righe della [Customer Bank Account] di quel Cliente. Sprinkler in questo caso segnalerà un RENAME del Cliente e un RENAME di un record corrispondente della [Customer Bank Account]. Il secondo RENAME però non troverà tramite la chiave il record cercato, perché __già rinominato__ direttamente da Dynamics 365 Business Central durante l'importazione del primo RENAME, e segnalerà un errore. Questo errore verrà inserito nella tabella [Data Distrib. Import Error] con la segnalazione del fatto che il record da rinominare non esiste: in realtà l'operazione è stata portata a termine correttamente, ma potrà essere complicato riuscire a interpretare cosa sia successo.