/// <summary>
        /// 
        /// </summary>
        /// <param name="user"></param>
        /// <param name="dtpData"></param>
        /// <returns></returns>
        private static DTPData SignByFirstUser(Upsilab.Data.Model.User user, DTPData dtpData)
        {
            //User infos
            dtpData = GetUserInfos(user, dtpData);

            DTPClient dtpClient = new DTPClient();

            //If idDictao has value, cancel this transaction and create a new one
            if (!string.IsNullOrEmpty(dtpData.TransactionId))
            {
                dtpClient.TransactionId = dtpData.TransactionId;
                try
                {
                    dtpClient.CancelTransaction();
                }
                catch { }
            }

            //#1 : Init transaction
            dtpClient.InitTransaction(dtpData.BusinessId);

            //#2 : Provide document
            dtpClient.ProvideDocuments(dtpData.DocumentsToSign);

            //#3 : create access user
            //TODO : where to put ?
            //string termAndConditionsFileName = "termsAndConditions_fr.pdf";
            //string termAndConditionsFileName = "convention_preuve.pdf";
            //string termAndConditionsUrl = string.Format("{0}/Client/Documents/{1}", Upsilab.Business.Utility.UrlHelper.GetHost(), termAndConditionsFileName);

            dtpData.UserAccessId = dtpClient.CreateUserAccess(string.Empty, user.UserName, user.UserFirstName, user.UserMobilePhone, dtpData.BackUrl);
            
            //#4 : create user space
            dtpClient.CreateUserSpace(dtpData);

            //#5 : create user space content
            dtpClient.CreateUserSpaceContent(dtpData);

            //#5' : send OTP by sms to user
            //dtpClient.SendOtp(accessId); TODO

            //#6 : build urlIhm
            dtpData.IHM_Url = dtpClient.BuildUserInterfaceUrl(dtpData);

            dtpData.TransactionId = dtpClient.TransactionId;

            return dtpData;
        }