Azure DevOps Integrazione: Rapporto di convalida dei dati
La sincronizzazione bidirezionale dei dati implica che entrambi i sistemi possono essere inaccessibili per periodi di tempo diversi e che i dati possono non essere sincronizzati. Con il rapporto di convalida dei dati, è possibile individuare gli elementi non sincronizzati correttamente e correggere le conseguenze direttamente dal rapporto.
Chi può accedere al rapporto?
Gli amministratori di Targetproccess, in quanto hanno accesso a Impostazioni di Targetprocess -> Integrazioni e quindi alla scheda Rapporto di convalida dei dati in ogni profilo di integrazione a livello di problema.
Quali errori possono essere individuati e risolti?
Il rapporto consente di individuare tre gruppi di errori o conseguenze improprie della sincronizzazione.
- Campi in conflitto: campi non sincronizzati in tutte le coppie di problemi collegati.
- Elementi persi e non importati: problemi che corrispondono alle impostazioni di integrazione e che possono essere importati.
- Coppie non valide: coppie in cui uno dei problemi non esiste o il suo ID/Tipo è cambiato e i problemi sono stati persi durante la sincronizzazione.
Ambiti del rapporto
La prima opzione Identifica i conflitti tra i campi degli elementi sincronizzati analizza tutti i temi condivisi e rileva le corrispondenze dei valori dei campi tra Targetprocess e Azure DevOps:
Se si nota che una scansione sta richiedendo troppo tempo, è possibile terminare una scansione di Data Validation Report in corso e restringere l'ambito.

Per le integrazioni più grandi si consigliano filtri aggiuntivi. È possibile utilizzare i filtri DSL come nelle schede Targetprocess e negli elenchi e scansionare i conflitti solo nelle entità selezionate.
Ad esempio, potrebbe essere ?ModifyDate == '20-Jul-2023'per scoprire se ci sono dei disallineamenti nei dati aggiornati al 20 luglio 2023 in Targetprocess.
Oppure potrebbe essere un fitler WIQL per selezionare gli elementi da scansionare dal punto di vista di Azure DevOps. Ricordarsi di utilizzare solo il contenuto della clausola WHERE:
[System.AreaPath] UNDER 'ADO_Project\ADO_Team'
Nel caso in cui una coppia in conflitto sia valida, i valori dei campi verranno confrontati e i campi non corrispondenti mostreranno i risultati nella scheda "Elementi in conflitto": 
Se la coppia non è valida - uno dei problemi non esiste o ha cambiato ID/Tipo e la sincronizzazione non è possibile - apparirà nella scheda "Collegamenti non validi" del rapporto: 
Le due opzioni di report successive servono a rilevare i problemi non importati e sono due richieste separate a Azure DevOps e Targetprocess.
Per impostazione predefinita, senza filtri aggiunti, il report cercherà tra tutti i progetti selezionati nella scheda "Progetti" del profilo (ambiti statici). Se viene aggiunto l'instradamento JavaScript, tutti i progetti accessibili verranno scansionati nonostante i progetti a cui si fa riferimento nella mappatura JavaScript.
Utilizzare filtri WIQL o DSL aggiuntivi se il profilo di integrazione utilizza instradamenti dinamici con un numero indefinito di progetti Azure DevOps/Targetprocess o se si desidera restringere l'ambito della scansione.
Conflitti e risoluzioni
In questa versione, il report analizza tutte le coppie esistenti di problemi collegati e confronta i valori dei campi in base alle mappature dei campi. la scheda di report 'Elementi in conflitto' mostra tutti i campi in cui i valori non corrispondono quando dovrebbero.

I campi mappati con le estensioni del codice JavaScript devono avere un comparatore personalizzato aggiunto, altrimenti verranno saltati dal report per impostazione predefinita.

Avviso per i comparatori di mappature JS mancanti
Il rapporto di convalida dei dati confronta i valori dei campi in entrambi gli strumenti e rileva le discrepanze.
- Blu: Mappature JS complete
- Giallo: Mappature incomplete


La scheda di questo rapporto mostra tutte le coppie in cui uno o entrambi i problemi non esistono: sono stati eliminati o il loro ID o tipo è stato modificato e non è possibile procedere alla sincronizzazione.
Questa categoria di errori prevede le seguenti azioni:
- aggiorna i conflitti
- 'Scollegamento'

Tutti i problemi che corrispondono ai filtri del profilo di integrazione al momento della scansione Targetprocess o Azure DevOps
Per risolvere i conflitti di 'Non importato', applicare una delle due azioni - "Pull to Targetprocess" o "Push to Azure DevOps"" per importare tutte le entità selezionate (filtrate) nello strumento selezionato.

Filtri e azioni
Tutti i problemi filtrati e visualizzabili nell'elenco sono considerati un ambito selezionato per qualsiasi azione. Se si desidera applicare un'azione a una riga specifica del report, filtrare la riga specifica e quindi applicare le modifiche all'unica riga rimasta nel report.

Nel caso in cui i campi in conflitto abbiano cambiato i loro valori, l'azione "Aggiorna conflitti" riporterà i valori attuali. Se il conflitto non è più attuale, scomparirà dal report (mappature rimosse, problemi scollegati) o cambierà il suo stato in "Risolto" (problema importato)
Questa azione sposta il conflitto nello stato "Ignorato". In questo stato, il conflitto non viene elaborato, né aggiornato, né risolto. Prima di applicare qualsiasi strategia di risoluzione dei conflitti, è necessario riportare il conflitto dallo stato "Ignorato" a quello effettivo.
'Ignora conflitti' attiva l'aggiornamento dei conflitti in background. Se i conflitti sono stati risolti indirettamente in uno dei sistemi, il conflitto di campo passerà a uno stato valido - "Risolto", se i valori corrispondono in questo momento, o di nuovo a "Conflitto", se la mancata corrispondenza è valida.

Strategie di risoluzione dei conflitti
Per risolvere i conflitti nei campi mappati, è possibile scegliere una delle tre strategie:
Tra due valori in conflitto, verrà selezionato il più recente e applicato al file corrispondente nell'altro sistema.
???? Nota: questa strategia funziona per i conflitti in cui entrambi i campi, Targetprocess e Azure DevOps, hanno date di ultima modifica. Se almeno un campo della coppia non ha una cronologia e una data di ultimo aggiornamento, è possibile applicare solo "Pull to Targetprocess" o "Push to Azure DevOps’ ".
Con questa strategia, tutti i valori dei campi di Targetprocess saranno inviati a Azure DevOps.
Nella sezione 'Non importato', questo importerà tutti gli elementi di Targetprocess selezionati in Azure DevOps.
Questa strategia considera Azure DevOps come fonte di verità e riscrive i campi di Targetprocess con i valori di Azure DevOps.
Nella sezione "Non importati", verranno importati tutti gli elementi selezionati di Azure DevOps in Targetprocess.
Lo scollegamento è necessario se l'entità è stata sincronizzata e il collegamento non è valido per vari motivi (emissione cancellata o convertita e il suo ID/Tipo cambiato e perso). In questi casi, prima di importare nuovamente un numero come nuovo, è necessario scollegarlo dall'elemento precedente.
Non appena i problemi vengono scollegati, passano allo stato "Risolto" e per il momento non sono possibili altre azioni con i collegamenti non validi risolti. Il numero libero può essere importato manualmente nello strumento collegato.
Flusso di lavoro per la risoluzione dei conflitti
Prima di applicare qualsiasi azione, si verifica il conflitto di ogni campo e si aggiorna il suo stato e i suoi campi. Questa convalida può essere richiamata manualmente con l'azione "Aggiorna".
Stato "Conflitto
Campi o temi che non corrispondono.
Con gli elementi nello stato "Conflitto", è possibile:
- Verificare il conflitto applicando l'azione "Aggiorna"
- ignorare" e non verrà applicata alcuna azione, anche se il problema viene inserito nel filtro
- Risolvere i conflitti filtrati con una delle strategie di risoluzione: 'Pull to Targetprocess', 'Push to Azure DevOps’, o 'Latest values'
Stato temporaneo che indica che si sta verificando l'esistenza di un conflitto. Se i valori sono uguali e se è stata selezionata un'azione ("Ignora", "Invia a Targetprocess", "Invia a Azure DevOps’, o "Ultimi valori"), è possibile applicare gli elementi selezionati.
lo stato 'Elaborazione' cambierà automaticamente
- A "Risolto", se il conflitto è risolto
- Torna a "Conflitto" se la modifica selezionata non può essere applicata o se si verifica ancora un conflitto e non sono state applicate altre azioni
- Per 'Update Sent', se l'azione è applicata e il nuovo valore è inviato a Azure DevOps
Stato finale. Nessuna azione sarà applicata ai conflitti risolti nella versione corrente del rapporto.
Nessuna azione sarà applicata ai conflitti in stato "Ignorato". L'azione "Ignora conflitti" richiama automaticamente un "Aggiorna" e attualizza il conflitto.
Questo stato indica che gli aggiornamenti sono in coda e verranno applicati a breve in Azure DevOps. È necessario aggiornare manualmente i conflitti per sapere se le modifiche sono state applicate correttamente. Questo stato non passerà automaticamente al successivo, anche se i valori sono già stati aggiornati.
Annullamento del rapporto di convalida dei dati e risoluzione dei conflitti
- Se il processo di risoluzione non è più necessario, annullarlo può aiutare a evitare elaborazioni inutili e a ridurre il carico sul sistema.
- Se il processo di risoluzione richiede un tempo eccessivamente lungo, annullarlo può aiutare a liberare risorse di sistema ed evitare ritardi.

