Exemplo n.º 1
0
        /// <summary>
        /// Impostazione di tutte le password come scadute per un'amministrazione
        /// </summary>
        /// <param name="amministrazione"></param>
        public static void ForzaScadenzaPassword(DocsPaVO.amministrazione.InfoAmministrazione amministrazione)
        {
            try
            {
                // 1. Creazione contesto transazionale per singola amministrazione
                using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
                {
                    // 2. Tutte le password per l'amministrazione vengono impostate come scadute

                    // 2a. Modifica delle configurazioni per la gestione delle password:
                    //  vengono rimossi i vincoli formali di validità
                    PasswordConfigurations pwdConfig = DocsPaPwdServices.AdminPasswordConfigServices.GetPasswordConfigurations(Convert.ToInt32(amministrazione.IDAmm));
                    pwdConfig.SpecialCharacters = null;
                    pwdConfig.MinLength         = 0;
                    pwdConfig.ExpirationEnabled = true; // Viene abilitata la scadenza password
                    pwdConfig.ValidityDays      = 30;
                    DocsPaPwdServices.AdminPasswordConfigServices.SavePasswordConfigurations(pwdConfig);
                    DocsPaPwdServices.AdminPasswordConfigServices.ExpireAllPassword(Convert.ToInt32(amministrazione.IDAmm));

                    // 3. Completamento della transazione
                    transactionContext.Complete();

                    Log.GetInstance(amministrazione).Write(string.Format("Tutte le password per l'amministrazione con codice '{0}' sono state impostate come scadute. I giorni di validità delle password sono '{1}'", amministrazione.Codice, pwdConfig.ValidityDays.ToString()), false);
                }
            }
            catch (Exception ex)
            {
                // Operazione annullata
                Log.GetInstance(amministrazione).Write(ex.Message, true);
            }
            finally
            {
                Log.GetInstance(amministrazione).Flush();
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Consente la rimozione di un'amministrazione in DCTM ma non in PITRE
        /// </summary>
        /// <param name="amministrazione">Amministrazioni PITRE da rimuovere in DCTM</param>
        public static bool RimuoviAmministrazione(DocsPaVO.amministrazione.InfoAmministrazione amministrazione)
        {
            bool retValue = false;

            /*
             * // 1. Connessione al sistema come utente amministratore
             * string userName = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUser();
             * string password = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUserPwd();
             *
             * UserLogin.LoginResult loginResult;
             * InfoUtenteAmministratore infoUtente = LoginServices.LoginAdmin(userName, password, out loginResult);
             *
             * if (loginResult == UserLogin.LoginResult.OK)
             * {
             *  AmministrazioneManager amministrazioneManager = new AmministrazioneManager(infoUtente);
             *
             *  // 2. Rimozione amministrazioni DCTM
             *  EsitoOperazione result = amministrazioneManager.Delete(amministrazione);
             *
             *  retValue = (result.Codice == RESULT_CODE_OK);
             *
             *  if (retValue)
             *  {
             *      // Rimozione stato migrazione per l'amministrazione
             *      StatoMigrazione.Delete(amministrazione);
             *  }
             * }
             */
            return(retValue);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Task di aggiornamento di tutti gli oggetti di un'amministrazione
        /// </summary>
        /// <param name="amministrazione"></param>
        /// <param name="tipiOggetti"></param>
        /// <returns></returns>
        public static bool AggiornaAmministrazione(DocsPaVO.amministrazione.InfoAmministrazione amministrazione, TipiOggettiAmministrazione tipiOggetti)
        {
            bool retValue = false;

            try
            {
                // 1. Connessione al sistema come utente amministratore
                //string userName = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUser();
                //string password = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUserPwd();
                string userName = "******";
                string password = "******";
                Log.GetInstance(amministrazione).Write(string.Format("Connessione al sistema come utente amministratore. UserName: '******' - Password: '******'", userName, password), false);

                UserLogin.LoginResult    loginResult;
                InfoUtenteAmministratore infoUtente = LoginServices.LoginAdmin(userName, password, out loginResult);

                if (loginResult == UserLogin.LoginResult.OK)
                {
                    // 2. Migrazione dati singola amministrazione
                    AggiornaAmministrazione(infoUtente, amministrazione, tipiOggetti);

                    Log.GetInstance(amministrazione).Write("Procedura di migrazione completata con successo", false);
                }
                else
                {
                    // 1a. Utente non autenticato
                    throw new ApplicationException(
                              string.Format("Errore nell'autenticazione dell'utente '{0}'. Esito:{1}",
                                            userName, loginResult.ToString()));
                }

                retValue = true;
            }
            catch (Exception ex)
            {
                // Migrazione annullata
                Log.GetInstance(amministrazione).Write(ex.Message, true);

                retValue = false;
            }
            finally
            {
                Log.GetInstance(amministrazione).Flush();
            }

            return(retValue);
        }
Exemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="folder"></param>
        /// <param name="projectManager"></param>

        /*private static void AggiornaAssociazioniFolderDocumenti(DocsPaVO.utente.InfoUtente infoUtente,
         *          DocsPaVO.amministrazione.InfoAmministrazione amministrazione,
         *          DocsPaVO.fascicolazione.Folder folder,
         *          DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager)
         * {
         *  // 3. Aggiornamento fascicolazioni per tutti i sottofascicoli contenuti
         *  foreach (DocsPaVO.fascicolazione.Folder fld in folder.childs)
         *  {
         *      if (projectManager.UpdateFascicolazioni(fld.systemID))
         *          Log.GetInstance(amministrazione).Write(string.Format("Aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", fld.systemID), false);
         *      else
         *          Log.GetInstance(amministrazione).Write(string.Format("Errore nell'aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", fld.systemID), false);
         *
         *      AggiornaAssociazioniFolderDocumenti(infoUtente, amministrazione, fld, projectManager);
         *  }
         * }
         */
        /// <summary>
        ///
        /// </summary>
        /// <param name="amministrazione"></param>
        /// <param name="fascicolo"></param>
        /// <param name="projectManager"></param>

        /*
         * private static void AggiornaAssociazioniFascicoliDocumenti(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.amministrazione.InfoAmministrazione amministrazione, DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager)
         * {
         *  // 2. Aggiornamento fascicolazioni del fascicolo
         *  if (projectManager.UpdateFascicolazioni(fascicolo.systemID))
         *  {
         *      string log = string.Format("Aggiornamento fascicolazioni per il fascicolo con id '{0}' e codice '{1}'", fascicolo.systemID, fascicolo.codice);
         *      Log.GetInstance(amministrazione).Write(log, false);
         *      logger.Debug(log);
         *
         *      DocsPaVO.fascicolazione.Folder[] folders = GetFolders(infoUtente, fascicolo);
         *
         *      // 3. Aggiornamento fascicolazioni per tutti i sottofascicoli contenuti
         *      foreach (DocsPaVO.fascicolazione.Folder folder in folders)
         *      {
         *          if (projectManager.UpdateFascicolazioni(folder.systemID))
         *              Log.GetInstance(amministrazione).Write(string.Format("Aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", folder.systemID), false);
         *          else
         *              Log.GetInstance(amministrazione).Write(string.Format("Errore nell'aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", folder.systemID), false);
         *
         *          AggiornaAssociazioniFolderDocumenti(infoUtente, amministrazione, folder, projectManager);
         *      }
         *  }
         *  else
         *      Log.GetInstance(amministrazione).Write(string.Format("Errore nell'aggiornamento fascicolazioni per il fascicolo con id '{0}'", fascicolo.systemID), false);
         * }
         */
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="fascicoli"></param>
        private static void ImportaFascicoliSelezionati(InfoUtente infoUtente, DocsPaVO.amministrazione.InfoAmministrazione amministrazione, Migrazione.InfoFascicoloMigrazione[] fascicoli)
        {
            InfoStatoMigrazione statoMigrazione = StatoMigrazione.Get(amministrazione);

            try
            {
                // Viene assegnato all'infoutente l'id dell'amministrazione fornita come parametro
                // per fare in modo che l'utente che esegue la migrazione si impersonifichi
                // come utente dell'amministrazione
                string idAmm = infoUtente.idAmministrazione;
                infoUtente.idAmministrazione = amministrazione.IDAmm;

                int index = 1;

                foreach (Migrazione.InfoFascicoloMigrazione infoFascicolo in fascicoli)
                {
                    if (_interrompiMigrazione)
                    {
                        _interrompiMigrazione = false;
                        Log.GetInstance(amministrazione).Write(string.Format("Migrazione fascicoli interrotta al fascicolo {0} di {1}", index.ToString(), fascicoli.Length), false);
                        break;
                    }

                    // 1. Reperimento oggetto fascicolo
                    //infoUtente.idGruppo = DocsPaDocumentale_DOCUMENTUM.DocsPaServices.DocsPaQueryHelper.getRuoloCreatore(infoFascicolo.Id).idGruppo;
                    infoUtente.idGruppo = "HERMES";
                    DocsPaVO.fascicolazione.Fascicolo fascicolo = GetFascicolo(infoFascicolo.Id, infoUtente);

                    // 2. Migrazione dei singoli fascicoli
                    ImportaFascicolo(fascicolo, infoUtente, amministrazione, statoMigrazione);

                    index++;
                }

                infoUtente.idAmministrazione = idAmm;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                // Save dello stato migrazione
                StatoMigrazione.Save(statoMigrazione, amministrazione);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="folder"></param>
        /// <param name="projectManager"></param>
        private static void AggiornaAssociazioniFolderDocumenti(DocsPaVO.utente.InfoUtente infoUtente,
                                                                DocsPaVO.amministrazione.InfoAmministrazione amministrazione,
                                                                DocsPaVO.fascicolazione.Folder folder,
                                                                DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager)
        {
            // 3. Aggiornamento fascicolazioni per tutti i sottofascicoli contenuti
            foreach (DocsPaVO.fascicolazione.Folder fld in folder.childs)
            {
                if (projectManager.UpdateFascicolazioni(fld.systemID))
                {
                    Log.GetInstance(amministrazione).Write(string.Format("Aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", fld.systemID), false);
                }
                else
                {
                    Log.GetInstance(amministrazione).Write(string.Format("Errore nell'aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", fld.systemID), false);
                }

                AggiornaAssociazioniFolderDocumenti(infoUtente, amministrazione, fld, projectManager);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Implementazione della logica del task di migrazione dati dei fascicoli
        /// per una singola amministrazione DocsPa
        /// </summary>
        /// <param name="amministrazione"></param>
        /// <param name="opzioniMigrazione"></param>
        /// <returns></returns>

        /*
         * public static void ImportaFascicoli(DocsPaVO.amministrazione.InfoAmministrazione amministrazione, OpzioniMigrazioneFascicolo opzioniMigrazione)
         * {
         *  try
         *  {
         *      // 1. Connessione al sistema come utente amministratore
         *      string userName = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUser();
         *      string password = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUserPwd();
         *
         *      Log.GetInstance(amministrazione).Write(string.Format("Connessione al sistema come utente amministratore. UserName: '******' - Password: '******'", userName, password), false);
         *
         *      UserLogin.LoginResult loginResult;
         *      InfoUtenteAmministratore infoUtente = LoginServices.LoginAdmin(userName, password, out loginResult);
         *
         *      if (loginResult == UserLogin.LoginResult.OK)
         *      {
         *          // 2. Migrazione di tutti i fascicoli in amministrazione
         *          Fascicolo.ImportaFascicoli(infoUtente, amministrazione, opzioniMigrazione);
         *      }
         *      else
         *      {
         *          // 1a. Utente non autenticato
         *          throw new ApplicationException(
         *              string.Format("Errore nell'autenticazione dell'utente '{0}'. Esito:{1}",
         *              userName, loginResult.ToString()));
         *      }
         *  }
         *  catch (Exception ex)
         *  {
         *      // Migrazione annullata
         *      Log.GetInstance(amministrazione).Write(ex.Message, true);
         *  }
         *  finally
         *  {
         *      Log.GetInstance(amministrazione).Flush();
         *  }
         * }
         */
        /// <summary>
        ///
        /// </summary>
        /// <param name="amministrazione"></param>
        /// <param name="fascicoli"></param>
        public static void ImportaFascicoliSelezionati(DocsPaVO.amministrazione.InfoAmministrazione amministrazione, Migrazione.InfoFascicoloMigrazione[] fascicoli)
        {
            try
            {
                // 1. Connessione al sistema come utente amministratore
                //string userName = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUser();
                //string password = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUserPwd();
                string userName = "******";
                string password = "******";
                Log.GetInstance(amministrazione).Write(string.Format("Connessione al sistema come utente amministratore. UserName: '******' - Password: '******'", userName, password), false);

                UserLogin.LoginResult    loginResult;
                InfoUtenteAmministratore infoUtente = LoginServices.LoginAdmin(userName, password, out loginResult);

                if (loginResult == UserLogin.LoginResult.OK)
                {
                    // 2. Migrazione di tutti i fascicoli in amministrazione
                    Fascicolo.ImportaFascicoliSelezionati(infoUtente, amministrazione, fascicoli);
                }
                else
                {
                    // 1a. Utente non autenticato
                    throw new ApplicationException(
                              string.Format("Errore nell'autenticazione dell'utente '{0}'. Esito:{1}",
                                            userName, loginResult.ToString()));
                }
            }
            catch (Exception ex)
            {
                // Migrazione annullata
                Log.GetInstance(amministrazione).Write(ex.Message, true);
            }
            finally
            {
                Log.GetInstance(amministrazione).Flush();
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Aggiornamento di un'amministrazione
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="tipiOggetti"></param>
        /// <returns></returns>
        internal static void AggiornaAmministrazione(InfoUtenteAmministratore infoUtente, DocsPaVO.amministrazione.InfoAmministrazione amministrazione, TipiOggettiAmministrazione tipiOggetti)
        {
            InfoStatoMigrazione statoMigrazione = StatoMigrazione.Get(amministrazione);

            AmministrazioneManager amministraManager = new AmministrazioneManager(infoUtente);

            // 1. Verifica amministrazione esistente in DCTM

            /*if (amministraManager.ContainsAmministrazione(amministrazione.Codice))
             * {
             *  List<string> ruoliImportati = null;
             *
             *  try
             *  {
             *      // 2. Creazione delle utenze dell'amministrazione
             *      if (tipiOggetti.Organigramma)
             *      {
             *          Organigramma.ImportaUtenti(infoUtente, amministrazione);
             *
             *          // 3. Creazione dei ruoli dell'amministrazione
             *          Organigramma.ImportaRuoli(infoUtente, amministrazione, out ruoliImportati);
             *
             *          // 4. Associazione degli utenti ai ruoli dell'amministrazione
             *          Organigramma.ImportaAssociazioniUtentiRuoli(infoUtente, amministrazione);
             *      }
             *      /*
             *      if (tipiOggetti.Titolario)
             *      {
             *          // 5. Creazione dei titolari dell'amministrazione
             *          Titolario.ImportaTitolari(infoUtente, amministrazione);
             *      }
             *
             *      // Imposta lo stato dell'amministrazione come migrata correttamente
             *      statoMigrazione.DatiAmministrazioneMigrati = true;
             *
             *      // Salva stato della migrazione
             *      StatoMigrazione.Save(statoMigrazione, amministrazione);
             *  }
             *  catch (Exception ex)
             *  {
             *      // Rollback: in caso di errore, viene rimossa l'amministrazione appena inserita
             *      // per mantenere i dati consistenti
             *      Log.GetInstance(amministrazione).Write(string.Format("Si è verificato un errore nella procedura di migrazione l'amministrazione '{0}'.", amministrazione.Codice), false);
             *
             *      throw ex;
             *  }
             * }
             * else
             * {
             *  // 1a. Errore nella migrazione dell'amministrazione (migrazione interrotta)
             *  throw new ApplicationException(string.Format("Si è verificato un errore nell'aggiornamento dell'amministrazione. Amministrazione con codice {0} non esistente", amministrazione.Codice));
             * }*/
        }
Exemplo n.º 8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="amministrazione"></param>
 public static void Interrompi(DocsPaVO.amministrazione.InfoAmministrazione amministrazione)
 {
     _interrompiMigrazione = true;
 }
Exemplo n.º 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="amministrazione"></param>
        /// <param name="fascicolo"></param>
        /// <param name="projectManager"></param>
        private static void AggiornaAssociazioniFascicoliDocumenti(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.amministrazione.InfoAmministrazione amministrazione, DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager)
        {
            // 2. Aggiornamento fascicolazioni del fascicolo
            if (projectManager.UpdateFascicolazioni(fascicolo.systemID))
            {
                string log = string.Format("Aggiornamento fascicolazioni per il fascicolo con id '{0}' e codice '{1}'", fascicolo.systemID, fascicolo.codice);
                Log.GetInstance(amministrazione).Write(log, false);
                logger.Debug(log);

                DocsPaVO.fascicolazione.Folder[] folders = GetFolders(infoUtente, fascicolo);

                // 3. Aggiornamento fascicolazioni per tutti i sottofascicoli contenuti
                foreach (DocsPaVO.fascicolazione.Folder folder in folders)
                {
                    if (projectManager.UpdateFascicolazioni(folder.systemID))
                    {
                        Log.GetInstance(amministrazione).Write(string.Format("Aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", folder.systemID), false);
                    }
                    else
                    {
                        Log.GetInstance(amministrazione).Write(string.Format("Errore nell'aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", folder.systemID), false);
                    }

                    AggiornaAssociazioniFolderDocumenti(infoUtente, amministrazione, folder, projectManager);
                }
            }
            else
            {
                Log.GetInstance(amministrazione).Write(string.Format("Errore nell'aggiornamento fascicolazioni per il fascicolo con id '{0}'", fascicolo.systemID), false);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Aggiornamento delle associazioni fascicoli / documenti
        /// </summary>
        /// <param name="amministrazione"></param>
        /// <param name="fascicoli"></param>
        public static void AggiornaAssociazioniFascicoliSelezionatiDocumenti(DocsPaVO.amministrazione.InfoAmministrazione amministrazione, Migrazione.InfoFascicoloMigrazione[] fascicoli)
        {
            try
            {
                // 1. Connessione al sistema come utente amministratore
                string userName = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUser();
                string password = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUserPwd();

                Log.GetInstance(amministrazione).Write(string.Format("Connessione al sistema come utente amministratore. UserName: '******' - Password: '******'", userName, password), false);

                UserLogin.LoginResult    loginResult;
                InfoUtenteAmministratore infoUtente = LoginServices.LoginAdmin(userName, password, out loginResult);

                if (loginResult == UserLogin.LoginResult.OK)
                {
                    // Viene assegnato all'infoutente l'id dell'amministrazione fornita come parametro
                    // per fare in modo che l'utente che esegue la migrazione si impersonifichi
                    // come utente dell'amministrazione
                    string idAmm = infoUtente.idAmministrazione;
                    infoUtente.idAmministrazione = amministrazione.IDAmm;

                    ProjectManager projectManager = new ProjectManager(infoUtente);

                    int index = 1;

                    foreach (Migrazione.InfoFascicoloMigrazione item in fascicoli)
                    {
                        if (_interrompiMigrazione)
                        {
                            _interrompiMigrazione = false;
                            Log.GetInstance(amministrazione).Write(string.Format("Aggiornamento associazione fascicoli documenti al fascicolo {0} di {1}", index.ToString(), fascicoli.Length), false);
                            break;
                        }

                        infoUtente.idGruppo = DocsPaDocumentale_DOCUMENTUM.DocsPaServices.DocsPaQueryHelper.getRuoloCreatore(item.Id).idGruppo;
                        DocsPaVO.fascicolazione.Fascicolo fascicolo = GetFascicolo(item.Id, infoUtente);

                        // 2. Aggiornamento fascicolazioni del fascicolo
                        AggiornaAssociazioniFascicoliDocumenti(infoUtente, amministrazione, fascicolo, projectManager);

                        index++;
                    }

                    infoUtente.idAmministrazione = idAmm;
                }
                else
                {
                    // 1a. Utente non autenticato
                    throw new ApplicationException(
                              string.Format("Errore nell'autenticazione dell'utente '{0}'. Esito:{1}",
                                            userName, loginResult.ToString()));
                }
            }
            catch (Exception ex)
            {
                // Migrazione annullata
                Log.GetInstance(amministrazione).Write(ex.Message, true);
            }
            finally
            {
                Log.GetInstance(amministrazione).Flush();
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Aggiornamento delle associazioni fascicoli / documenti
        /// </summary>
        /// <param name="amministrazione"></param>
        /// <param name="opzioniMigrazione"></param>
        public static void AggiornaAssociazioniFascicoliDocumenti(DocsPaVO.amministrazione.InfoAmministrazione amministrazione, OpzioniMigrazioneFascicolo opzioniMigrazione)
        {
            try
            {
                // 1. Connessione al sistema come utente amministratore
                string userName = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUser();
                string password = DocsPaDocumentale_DOCUMENTUM.DctmServices.DctmConfigurations.GetDocumentumSuperUserPwd();

                Log.GetInstance(amministrazione).Write(string.Format("Connessione al sistema come utente amministratore. UserName: '******' - Password: '******'", userName, password), false);

                UserLogin.LoginResult    loginResult;
                InfoUtenteAmministratore infoUtente = LoginServices.LoginAdmin(userName, password, out loginResult);

                if (loginResult == UserLogin.LoginResult.OK)
                {
                    // Viene assegnato all'infoutente l'id dell'amministrazione fornita come parametro
                    // per fare in modo che l'utente che esegue la migrazione si impersonifichi
                    // come utente dell'amministrazione
                    string idAmm = infoUtente.idAmministrazione;
                    infoUtente.idAmministrazione = amministrazione.IDAmm;

                    ProjectManager projectManager = new ProjectManager(infoUtente);

                    // 2. Reperimento di tutti i fascicoli in PITRE
                    using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider())
                    {
                        using (DataSet ds = new DataSet())
                        {
                            // 1. Reperimento fascicoli per il titolario
                            if (dbProvider.ExecuteQuery(ds, GetQueryFascicoli(infoUtente, opzioniMigrazione.Filtro)))
                            {
                                Log.GetInstance(amministrazione).Write("Reperimento fascicoli in amministrazione.", false);

                                int index = 1;

                                foreach (DataRow row in ds.Tables[0].Rows)
                                {
                                    if (_interrompiMigrazione)
                                    {
                                        _interrompiMigrazione = false;
                                        string log = string.Format("Aggiornamento associazione fascicoli documenti al fascicolo {0} di {1}", index.ToString(), ds.Tables[0].Rows.Count);
                                        Log.GetInstance(amministrazione).Write(log, false);
                                        logger.Debug(log);
                                        break;
                                    }

                                    DocsPaVO.fascicolazione.Fascicolo fascicolo = GetFascicolo(row, infoUtente);

                                    // 2. Aggiornamento fascicolazioni del fascicolo
                                    AggiornaAssociazioniFascicoliDocumenti(infoUtente, amministrazione, fascicolo, projectManager);

                                    index++;
                                }
                            }
                            else
                            {
                                // 1a. Errore nel reperimento dei fascicoli
                                throw new ApplicationException(
                                          string.Format("Si è verificato un errore nel reperimento dei fascicolo per l'amministrazione '{0}'",
                                                        amministrazione.Codice));
                            }
                        }
                    }

                    infoUtente.idAmministrazione = idAmm;
                }
                else
                {
                    // 1a. Utente non autenticato
                    throw new ApplicationException(
                              string.Format("Errore nell'autenticazione dell'utente '{0}'. Esito:{1}",
                                            userName, loginResult.ToString()));
                }
            }
            catch (Exception ex)
            {
                // Migrazione annullata
                Log.GetInstance(amministrazione).Write(ex.Message, true);
            }
            finally
            {
                Log.GetInstance(amministrazione).Flush();
            }
        }