Hai mai sviluppato un’app per Microsoft Dynamics 365 Business Central che, nel tempo, è diventata troppo grande e difficile da gestire? Con la nuova funzionalità introdotta da Microsoft, è finalmente possibile suddividere grandi app in moduli più piccoli e mantenibili, anche in ambienti online. In questo articolo esploreremo passo passo come spostare tabelle e campi tra app, evitando interruzioni e perdite di dati.
Cos’è il “Move” di Tabelle e Campi
Microsoft ha introdotto una funzione che consente di dichiarare una tabella o un campo come “moved” da un’app a un’altra. Questo è particolarmente utile per la modularizzazione delle applicazioni e per gestire la complessità in ambienti production, sia on-premise che online.
ObsoleteState: Moved e PendingMove
Moved: il campo o tabella è già stato trasferito in un’altra app.
PendingMove: il campo o tabella è in attesa di essere spostato.
La scelta tra i due dipende dalla direzione dello spostamento:
Move Down (verso un’app che dipende da quella originale): si può usare direttamente “moved”.
Move Up (verso un’app da cui si dipende): è necessario passare prima per “pendingMove” e aggiornare la build.
Esempio Pratico: Dalla Teoria alla Pratica
Scenario
Un’app chiamata International Book contiene tabelle come “BookHeader” e “ShippingAgent2”. L’obiettivo è spostare la tabella “ShippingAgent2” in una nuova app specializzata nella gestione delle spedizioni.
Passaggi per lo Spostamento
Nella vecchia app:
Dichiarare la tabella come
ObsoleteState = Moved
Specificare
MoveTo
con l’App ID della nuova appStessa cosa per i singoli campi (es. ShippingAgent2Number)
Creare la nuova app:
Dipendere dall’app originale tramite App.json
Ricreare la tabella identica con
MoveFrom
Stesso ID, nome e namespace
Copiare eventuali Page e crearne le estensioni
Publishing:
Utilizzare il comando
Publish Full Dependency Tree
per garantire l’installazione coerente di tutte le dipendenze
Best Practice e Avvertenze
Matching Perfetto: ID, nomi, namespace devono essere identici.
No Breaking Changes: lo spostamento non deve introdurre modifiche che interrompono il funzionamento.
Evita PTE: questa funzionalità non è supportata su app PTE (per ora).
Gestione Versioni: incrementare sempre la build per ogni pubblicazione.
Chiavi Primarie e Secondarie: i campi parte di chiavi non possono essere spostati.
Backup e Test: fare sempre test in ambienti on-premise e monitorare gli effetti sul database.
Vantaggi di Questa Tecnica
Modularizzazione del codice
Facilita la manutenzione
Riduce i rischi in ambienti production
Nessun uso di ETL o SQL manuale
Conclusione
La nuova funzionalità di spostamento di tabelle e campi in Business Central semplifica enormemente la gestione di app complesse. Seguendo una metodologia precisa e rispettando le regole imposte, è possibile ottenere una separazione logica e tecnica delle funzionalità senza compromettere la stabilità dell’applicazione.
FAQ
È possibile spostare una tabella tra app in Business Central online?
Sì, è possibile utilizzando lo stato ObsoleteState = Moved
e seguendo le regole di dipendenza tra app.
Quali sono i rischi principali nello spostare tabelle e campi?
Il rischio principale è la perdita di dati se gli ID, nomi o namespace non corrispondono perfettamente tra app.
Si possono spostare anche i campi delle chiavi primarie?
No, i campi delle chiavi primarie e secondarie non possono essere spostati.
Come pubblicare correttamente le app dipendenti?
Utilizza il comando Publish Full Dependency Tree for Active Project
per garantire una pubblicazione ordinata delle app.
Posso usare questa funzione nelle app PTE?
No, al momento questa funzione è disponibile solo per AppSource e ambienti on-premise.