Exemplo n.º 1
0
        /// <summary>
        /// Creazione ACL per l'amministrazione
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        protected virtual CustomServices.AclDefinition CreateAclAdmin(InfoAmministrazione info)
        {
            CustomServices.AclDefinition aclData = null;

            try
            {
                // Reperimento ACL per gli oggetti visibili da tutta l'amministrazione
                aclData = Dfs4DocsPa.getAclDefinitionAmministrazione(info.Codice);

                CustomServices.IAclService    aclService  = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
                CustomServices.ObjectIdentity aclIdentity = aclService.Create(aclData);

                if (aclIdentity == null)
                {
                    throw new ApplicationException(string.Concat("Errore nella creazione dell'ACL per l'amministrazione con ID '{0}'", info.IDAmm));
                }
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore in Documentum.CreateAclAdmin:\n{0}", ex.ToString());
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage);
            }

            return(aclData);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Aggiornamento visibilità di più ruoli su un titolario
        /// </summary>
        /// <param name="nodoTitolario"></param>
        /// <param name="ruoliTitolario"></param>
        /// <returns></returns>
        public DocsPaVO.amministrazione.EsitoOperazione[] SetAclNodoTitolario(OrgNodoTitolario nodoTitolario, OrgRuoloTitolario[] ruoliTitolario)
        {
            // Per documentum, viene riportato un'unico EsitoOperazione
            // contenente i dettagli relativi all'esito dell'intera operazione effettuata
            // (a differenza di etdocs, l'aggiornamento è effetuato in un'unica operazione)
            EsitoOperazione retValue = new EsitoOperazione();

            try
            {
                // Reperimento ACL del nodo titolario
                CustomServices.AclDefinition aclData = Dfs4DocsPa.getAclDefinition(nodoTitolario.ID, ObjectTypes.NODO_TITOLARIO, nodoTitolario.CodiceAmministrazione);

                CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

                // Aggiornamento della visibilità dei ruoli sul nodo titolario
                aclService.ClearAndGrant(aclData);

                retValue.Codice      = 0;
                retValue.Descrizione = string.Format("Aggiornamento dei ruoli nel nodo titolario '{0}' terminato correttamente", nodoTitolario.Codice);
            }
            catch (Exception ex)
            {
                retValue.Codice      = -1;
                retValue.Descrizione = string.Format("Errore in Documentum nell'aggiornamento dei ruoli nel nodo titolario '{0}'", nodoTitolario.Codice);

                logger.Debug("Errore in Documentum.SetAclNodoTitolario: " + ex.ToString());
            }

            return(new EsitoOperazione[1] {
                retValue
            });
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="aclToRemove"></param>
        protected virtual void DeleteAcl(CustomServices.AclDefinition aclToRemove)
        {
            // Creazione servizio ACL
            CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

            aclService.Delete(aclToRemove);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creazione delle ACL per il nodo titolario
        /// </summary>
        /// <param name="nodoTitolario"></param>
        /// <returns>ACL creata, ma ancora non associata al nodo titolario</returns>
        protected virtual CustomServices.AclDefinition CreateAclNodoTitolario(DocsPaVO.amministrazione.OrgNodoTitolario nodoTitolario)
        {
            CustomServices.AclDefinition aclData = null;

            try
            {
                // Reperimento ACL nodo titolario
                aclData = Dfs4DocsPa.getAclDefinition(nodoTitolario.ID, ObjectTypes.NODO_TITOLARIO, nodoTitolario.CodiceAmministrazione);

                CustomServices.IAclService    aclService  = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
                CustomServices.ObjectIdentity aclIdentity = aclService.Create(aclData);

                if (aclIdentity == null)
                {
                    throw new ApplicationException(string.Concat("Errore nella creazione dell'ACL per il nodo titolario con ID '{0}'", nodoTitolario.ID));
                }
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore in Documentum.CreateAclNodoTitolario:\n{0}", ex.ToString());
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage);
            }

            return(aclData);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Revoca della visibilità su un documento (e dell'ownership, nel caso l'utente / ruolo rimosso è proprietario)
        /// </summary>
        /// <param name="documentInfo"></param>
        /// <returns></returns>
        public bool RemovePermission(DocsPaVO.fascicolazione.DirittoOggetto infoDiritto)
        {
            bool removed = false;

            try
            {
                // Reperimento utente proprietario
                string ownerUser = TypeUtente.NormalizeUserName(DocsPaQueryHelper.getCodiceRubricaProprietario(infoDiritto.idObj, true));

                if (this.SetOwnershipFascicolo(infoDiritto.idObj, ownerUser))
                {
                    CustomServices.AclDefinition aclDefinition = Dfs4DocsPa.getAclDefinition(infoDiritto.idObj, ObjectTypes.FASCICOLO, this.InfoUtente);

                    CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

                    aclService.ClearAndGrant(aclDefinition, infoDiritto.idObj);
                }

                removed = true;
            }
            catch (Exception ex)
            {
                removed = false;

                logger.Debug(string.Format("Errore in Documentum.RemovePermission:\n{0}", ex.ToString()));
            }

            return(removed);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Impostazione della visibilità su un fascicolo
        /// (e dell'ownership, nel caso l'utente / ruolo rimosso fosse il proprietario)
        /// </summary>
        /// <param name="infoDiritto"></param>
        /// <returns></returns>
        public bool AddPermission(DocsPaVO.fascicolazione.DirittoOggetto infoDiritto)
        {
            bool added = false;

            // se si revocano i diritti all'utente proprietario,
            // si revocano anche al ruolo proprietario e viceversa.
            // Il proprietario del documento diventa l'utente e il ruolo del revocante

            try
            {
                // Reperimento utente proprietario
                string ownerUser = TypeUtente.NormalizeUserName(DocsPaQueryHelper.getCodiceRubricaProprietario(infoDiritto.idObj, true));

                // Modifica ownership del fascicolo
                if (this.SetOwnershipFascicolo(infoDiritto.idObj, ownerUser))
                {
                    CustomServices.AclDefinition aclDefinition = Dfs4DocsPa.getAclDefinition(infoDiritto.idObj, ObjectTypes.FASCICOLO, this.InfoUtente);

                    CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

                    aclService.ClearAndGrant(aclDefinition, infoDiritto.idObj);

                    added = true;
                }
            }
            catch (Exception ex)
            {
                added = false;

                logger.Debug(string.Format("Errore in Documentum.RemovePermission:\n{0}", ex.ToString()));
            }

            return(added);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Creazione delle ACL per il fascicolo
        /// NOTA: RW di DocsPA equivale a DELETE di Documentum
        /// </summary>
        /// <param name="fascicolo"></param>
        /// <param name="ruoloCreatore"></param>
        /// <returns>ACL creata, ma ancora non associata al documento</returns>
        protected virtual CustomServices.AclDefinition CreateAclFascicolo(DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.utente.Ruolo ruoloCreatore)
        {
            CustomServices.AclDefinition aclData = null;

            try
            {
                // Reperimento ACL per il fascicolo
                aclData = Dfs4DocsPa.getAclDefinition(fascicolo.systemID, ObjectTypes.FASCICOLO, this.InfoUtente);

                // istanziamo ACLservice in modalità super-user per poter comunque creare una acl di sistema
                // nota: questo non sarebbe strettamente necessario (si potrebbe usare una user-acl, di tipo public)
                // ma si ritiene che non sia bello avere le acl di proprietà degli utenti creatori del documento
                CustomServices.IAclService aclSvcSuper = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

                CustomServices.ObjectIdentity aclIdentity = aclSvcSuper.Create(aclData);

                if (aclIdentity == null)
                {
                    throw new ApplicationException(string.Concat("Errore nella creazione dell'ACL per il fascicolo con id '{0}'", fascicolo.systemID));
                }
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore in Documentum.CreateAclFascicolo:\n{0}", ex.ToString());
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage);
            }

            return(aclData);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Rimozione delle ACL per tutti gli oggetti dell'amministrazione
        /// </summary>
        /// <param name="info"></param>
        protected virtual void DeleteAcl(InfoAmministrazione info)
        {
            // Creazione servizio ACL (con credenziali da superamministratore)
            CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

            // Rimozione di tutte le ACL di tutti gli oggetti dell'amministrazione
            // NB: Il parametro force + per ogni evenienza, ma sarebbe da evitarne l'uso: può creare inconsistenze nel DB di Documentum
            int affectedRows = aclService.DeleteAll(DctmConfigurations.GetRepositoryName(), AclHelper.getAclName(info.Codice), true);

            logger.Debug(string.Format("Rimozione ACL per tutti gli oggetti dell'amministrazione. Rimossi {0} oggetti", affectedRows.ToString()));
        }
Exemplo n.º 9
0
        /// <summary>
        /// Handler dell'evento di avvenuta accettazione / rifiuto di una trasmissione di un documento / fascicolo
        /// </summary>
        /// <param name="trasmissione"></param>
        /// <param name="ruolo"></param>
        /// <param name="tipoRisposta"></param>
        public void TrasmissioneAccettataRifiutataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.trasmissione.TipoRisposta tipoRisposta)
        {
            CustomServices.AclDefinition aclData = null;

            DateTime startDate = DateTime.Now;

            // Aggiornamento ACL in DCTM, con le credenziali di superuser
            CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

            if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO)
            {
                // Reperimento della lista delle ACL aggiornata nella tabella security di docspa
                aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoDocumento.docNumber, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente);
                aclService.ClearAndGrant(aclData, trasmissione.infoDocumento.idProfile);
            }
            else if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO)
            {
                DateTime startDateFasc = DateTime.Now;

                // Reperimento della lista delle ACL aggiornata nella tabella security di docspa
                aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoFascicolo.idFascicolo, DocsPaObjectTypes.ObjectTypes.FASCICOLO, this.InfoUtente);
                aclService.ClearAndGrant(aclData, trasmissione.infoFascicolo.idFascicolo);

                logger.Debug("Tot sec. FASC: " + DateTime.Now.Subtract(startDateFasc).TotalSeconds.ToString());
                string[] idProfiles = DocsPaQueryHelper.getDocumentiInFascicolo(trasmissione.infoFascicolo.idFascicolo);


                //PORKING: nonè necessario farlo ora, perchè le aCL di Documenti vengono rimappate se necesario quando gli utenti o i ruoli faranno
                //          GetDettaglio con il metedo RefreshAcl
                if (idProfiles != null && idProfiles.Length < 20)
                {
                    foreach (string idProfile in idProfiles)
                    {
                        DateTime startDateDoc = DateTime.Now;

                        // Aggiornamento delle ACL per tutti i documenti nel fascicolo (compresi eventuali sottofascicoli)
                        // Aggiornamento delle ACL per tutti i documenti nel fascicolo (compresi eventuali sottofascicoli)
                        //DCTM è usato solo con PITRE e in PITRE storicamente il idprofile è sempre uguale a docnumber quindi posso togliere questa query
                        //DocsPaQueryHelper.getDocNumber(idProfile) è passare in input direttamente idProfile al metodo getAclDefinition
                        aclData = Dfs4DocsPa.getAclDefinition(idProfile, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente);
                        aclService.ClearAndGrant(aclData, idProfile);

                        logger.DebugFormat("Tot sec. DOC_{0}: {1}", idProfile, DateTime.Now.Subtract(startDateDoc).TotalSeconds.ToString());
                    }
                }
            }

            logger.Debug("Tot sec.: " + DateTime.Now.Subtract(startDate).TotalSeconds.ToString());
        }
Exemplo n.º 10
0
        /// <summary>
        /// Aggiornamento delle entries dell'acl associata al nodo di titolario
        /// </summary>
        /// <param name="nodoTitolario"></param>
        /// <returns></returns>
        protected virtual void RefreshAclNodoTitolario(DocsPaVO.amministrazione.OrgNodoTitolario nodoTitolario)
        {
            try
            {
                // Reperimento ACL nodo titolario
                CustomServices.AclDefinition aclData = Dfs4DocsPa.getAclDefinition(nodoTitolario.ID, ObjectTypes.NODO_TITOLARIO, nodoTitolario.CodiceAmministrazione);

                CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
                aclService.ClearAndGrant(aclData);
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore in Documentum.CreateAclNodoTitolario:\n{0}", ex.ToString());
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage);
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Aggiornamento delle entries dell'acl del fascicolo
        /// </summary>
        /// <param name="fascicolo"></param>
        protected virtual void RefreshAclFascicolo(DocsPaVO.fascicolazione.Fascicolo fascicolo)
        {
            try
            {
                // Reperimento ACL per il fascicolo
                CustomServices.AclDefinition aclData = Dfs4DocsPa.getAclDefinition(fascicolo.systemID, ObjectTypes.FASCICOLO, this.InfoUtente);

                // istanziamo ACLservice in modalità super-user per poter comunque creare una acl di sistema
                // nota: questo non sarebbe strettamente necessario (si potrebbe usare una user-acl, di tipo public)
                // ma si ritiene che non sia bello avere le acl di proprietà degli utenti creatori del documento
                CustomServices.IAclService aclSvcSuper = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

                aclSvcSuper.ClearAndGrant(aclData, fascicolo.systemID);
            }
            catch (Exception ex)
            {
                string errorMessage = string.Format("Errore in Documentum.RefreshAclFascicolo:\n{0}", ex.ToString());
                logger.Debug(errorMessage);

                throw new ApplicationException(errorMessage);
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Impostazione / rimozione della visibilità di un singolo nodo di titolario per un ruolo
        /// </summary>
        /// <param name="nodoTitolario"></param>
        /// <param name="ruoloTitolario">
        /// Ruolo cui deve essere associata / rimossa la visibilità verso il nodo titolario
        /// </param>
        /// <returns></returns>
        public bool SetAclRuoloNodoTitolario(OrgNodoTitolario nodoTitolario, OrgRuoloTitolario ruoloTitolario)
        {
            bool retValue = false;

            try
            {
                // Reperimento ACL associate al nodo di titolario SOLO per il ruolo richiesto
                CustomServices.AclDefinition aclData = AclHelper.getAclDefinition(nodoTitolario.CodiceAmministrazione, nodoTitolario.ID, ObjectTypes.NODO_TITOLARIO);

                List <CustomServices.AclEntry> entries = new List <CustomServices.AclEntry>(aclData.entries);
                //AclHelper.addBasicPermit(entries, TypeGruppo.NormalizeGroupName(ruoloTitolario.Codice), Permission.DELETE);
                AclHelper.addBasicPermit(entries, TypeGruppo.NormalizeGroupName(DocsPaQueryHelper.getCodiceRuoloFromIdGroups(ruoloTitolario.ID)), Permission.DELETE);
                aclData.entries = entries.ToArray();

                CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

                if (ruoloTitolario.Associato)
                {
                    // Impostazione visibilità del ruolo
                    aclService.UpdateWithGrant(aclData);
                }
                else
                {
                    // Rimozione visibilità  del ruolo
                    aclService.Revoke(aclData);
                }

                retValue = true;
            }
            catch (Exception ex)
            {
                retValue = false;

                logger.Debug("Errore in Documentum.SetAclRuoloNodoTitolario: " + ex.ToString());
            }

            return(retValue);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Aggiornamento Acl per il documento
        /// </summary>
        /// <param name="idProfile"></param>
        protected virtual CustomServices.AclDefinition UpdateAclDocumento(string idProfile, string docNumber)
        {
            bool stamparegistro = DocsPaQueryHelper.isStampaRegistro(docNumber) && !DocsPaQueryHelper.isStampaRegistroRepertorio(docNumber);

            CustomServices.AclDefinition aclData = null;
            if (stamparegistro)
            {
                aclData = Dfs4DocsPa.getAclDefinition(idProfile, ObjectTypes.DOCUMENTO_STAMPA_REGISTRO, this.InfoUtente);
            }
            else
            {
                aclData = Dfs4DocsPa.getAclDefinition(idProfile, ObjectTypes.DOCUMENTO, this.InfoUtente);
            }
            // istanziamo ACLservice in modalità super-user per poter comunque creare una acl di sistema
            // nota: questo non sarebbe strettamente necessario (si potrebbe usare una user-acl, di tipo public)
            // ma si ritiene che non sia bello avere le acl di proprietà degli utenti creatori del documento
            CustomServices.IAclService aclSvcSuper = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());

            // Aggiornamento ACL
            aclSvcSuper.ClearAndGrant(aclData, idProfile);

            return(aclData);
        }
Exemplo n.º 14
0
        /// <summary>
        /// Handler dell'evento di avvenuto smistamento di un documento ad un ruolo
        /// </summary>
        /// <param name="mittente"></param>
        /// <param name="documento"></param>
        /// <param name="ruolo"></param>
        /// <param name="accessRights"></param>
        public void SmistamentoDocumentoCompletatoEventHandler(DocsPaVO.Smistamento.MittenteSmistamento mittente, DocsPaVO.Smistamento.DocumentoSmistamento documento, DocsPaVO.Smistamento.RuoloSmistamento ruolo, string accessRights)
        {
            //// Reperimento ACL per il documento smistato
            //CustomServices.AclDefinition aclDefinition = AclHelper.getAclDefinition(DocsPaQueryHelper.getCodiceAmministrazione(this.InfoUtente.idAmministrazione), documento.DocNumber, DocsPaObjectTypes.ObjectTypes.DOCUMENTO);

            //// Inserimento dell'entry relativa al ruolo destinatario
            //List<CustomServices.AclEntry> entries = new List<CustomServices.AclEntry>(aclDefinition.entries);
            //AclHelper.addBasicPermit(entries, DocsPaObjectTypes.TypeGruppo.NormalizeGroupName(ruolo.Codice), Dfs4DocsPa.getPermitLevel(accessRights));
            //aclDefinition.entries = entries.ToArray();

            //// Aggiornamento ACL in DCTM, con le credenziali di superuser
            //CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance<CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
            //aclService.Clear(aclDefinition);
            //aclService.UpdateWithGrant(aclDefinition);

            CustomServices.AclDefinition aclData = null;

            // Reperimento della lista delle ACL aggiornata nella tabella security di docspa
            aclData = Dfs4DocsPa.getAclDefinition(documento.DocNumber, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente);

            // Aggiornamento ACL in DCTM, con le credenziali di superuser
            CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
            aclService.ClearAndGrant(aclData, documento.IDDocumento);
        }
Exemplo n.º 15
0
 /// <summary>
 /// Rimozione dell'ACL per gli oggetti visibili da tutta l'amministrazione
 /// </summary>
 /// <param name="aclAdmin"></param>
 protected virtual void DeleteAclAdmin(CustomServices.AclDefinition aclAdmin)
 {
     // Creazione servizio ACL (con credenziali da superamministratore)
     CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
     aclService.Delete(aclAdmin);
 }
Exemplo n.º 16
0
        /// <summary>
        /// Handler dell'evento di avvenuta trasmissione di un documento / fascicolo
        /// </summary>
        /// <param name="trasmissione"></param>
        /// <param name="infoSecurity">
        /// Oggetto contenente i metadati relativi alla tipologia di ACL
        /// impostata nella trasmissione di un documento / fascicolo
        /// </param>
        public void TrasmissioneCompletataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.trasmissione.infoSecurity[] infoSecurityList)
        {
            // In caso di trasmissione con cessione diritti,
            // viene modificata l'ownership del documento / fascicolo trasmesso
            // se il documento era di proprietà del cedente
            if (trasmissione.cessione != null && trasmissione.cessione.docCeduto)
            {
                // imposta l'Ownership solo se è stato impostato il nuovo utente che diventerà proprietario del doc/fas.
                // Questo avviene quando si stanno cedendo i diritti di proprietà (P).
                // Se si stanno cedendo i diritti acquisiti (A o T o F) questo blocco viene saltato.
                if (trasmissione.cessione.idPeopleNewPropr != null && trasmissione.cessione.idPeopleNewPropr != "")
                {
                    IQueryService queryService = DctmServiceFactory.GetServiceInstance <IQueryService>(UserManager.ImpersonateSuperUser());

                    // Reperimento nome utente e ruolo cui viene impostata l'ownership del documento
                    string ownerUser = DocsPaObjectTypes.TypeUtente.NormalizeUserName(DocsPaQueryHelper.getCodiceUtente(trasmissione.cessione.idPeopleNewPropr));

                    if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO)
                    {
                        string ownerRole = DocsPaObjectTypes.TypeGruppo.NormalizeGroupName(DocsPaQueryHelper.getCodiceRuoloFromIdGroups(trasmissione.cessione.idRuoloNewPropr));

                        Dfs4DocsPa.setOwnershipDocumento(trasmissione.infoDocumento.idProfile, ownerUser, ownerRole, queryService);
                    }
                    else if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO)
                    {
                        Dfs4DocsPa.setOwnershipFascicolo(trasmissione.infoFascicolo.idFascicolo, ownerUser, queryService);
                    }
                }
            }

            CustomServices.AclDefinition aclData = null;

            if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO)
            {
                // Reperimento della lista delle ACL aggiornata nella tabella security di docspa
                aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoDocumento.docNumber, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente);

                // Aggiornamento ACL in DCTM, con le credenziali di superuser
                CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
                aclService.ClearAndGrant(aclData, trasmissione.infoDocumento.idProfile);
            }
            else if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO)
            {
                // Reperimento della lista delle ACL aggiornata nella tabella security di docspa
                aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoFascicolo.idFascicolo, DocsPaObjectTypes.ObjectTypes.FASCICOLO, this.InfoUtente);

                // Aggiornamento ACL in DCTM, con le credenziali di superuser
                CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser());
                aclService.ClearAndGrant(aclData, trasmissione.infoFascicolo.idFascicolo);

                string[] idProfiles = DocsPaQueryHelper.getDocumentiInFascicolo(trasmissione.infoFascicolo.idFascicolo);
                //PORKING: nonè necessario farlo ora, perchè le aCL di Documenti vengono rimappate se necesario quando gli utenti o i ruoli faranno
                //          GetDettaglio con il metedo RefreshAcl
                if (idProfiles != null && idProfiles.Length < 20)
                {
                    foreach (string idProfile in idProfiles)
                    {
                        // Aggiornamento delle ACL per tutti i documenti nel fascicolo (compresi eventuali sottofascicoli)
                        //DCTM è usato solo con PITRE e in PITRE storicamente il idprofile è sempre uguale a docnumber quindi posso togliere questa query
                        //DocsPaQueryHelper.getDocNumber(idProfile) è passare in input direttamente idProfile al metodo getAclDefinition

                        aclData = Dfs4DocsPa.getAclDefinition(idProfile, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente);

                        aclService.ClearAndGrant(aclData, idProfile);
                    }
                }
            }
        }