/**
  * Creates a backend user.
  *
  * See class documentation for more details.
  */
 public function run()
 {
     $backendUserModelUid = $this->getProcessSettings('modelUid');
     // Checking if something was given in "settings.modelUid".
     if (!MathUtility::canBeInterpretedAsInteger($backendUserModelUid)) {
         $this->addError('duplication_process.backend_user_creation.error.must_be_integer', 1432908303);
         return;
     }
     // Checking if the given backend user is valid.
     /** @var BackendUserRepository $backendUserRepository */
     $backendUserRepository = $this->objectManager->get(BackendUserRepository::class);
     /** @var BackendUser $backendUser */
     $backendUser = $backendUserRepository->findByUid($backendUserModelUid);
     if (!$backendUser) {
         $this->addError('duplication_process.backend_user_creation.error.wrong_uid', 1432908427, ['d' => $backendUserModelUid]);
         return;
     }
     // Creating a new instance of backend user, and copying the values from the model one.
     /** @var BackendUser $backendUserClone */
     $backendUserClone = GeneralUtility::makeInstance(BackendUser::class);
     $backendUserClone->setPid($this->getDuplicatedPageUid());
     $backendUserName = Core::getCleanedValueFromTCA('be_users', 'username', $backendUser->getUserName(), 0);
     $backendUserClone->setUserName($backendUserName);
     /** @var PersistenceManager $persistenceManager */
     $persistenceManager = $this->objectManager->get(PersistenceManager::class);
     $persistenceManager->add($backendUserClone);
     $persistenceManager->persistAll();
     $this->addNotice('duplication_process.backend_user_creation.notice.success', 1432909010, ['s' => $backendUserClone->getUserName()]);
     // Managing base mount.
     $duplicatedPageUid = $this->getDuplicatedPageUid();
     if ($duplicatedPageUid) {
         $this->fixDataBaseMountPointForBackendUser($backendUserClone, $this->getDuplicatedPageUid());
     }
     // Managing file mount.
     $fileMountUid = $this->getProcessSettings('sysFileMountUid');
     if ($fileMountUid) {
         /** @var FileMountRepository $fileMountRepository */
         $fileMountRepository = $this->objectManager->get(FileMountRepository::class);
         /** @var FileMount $fileMount */
         $fileMount = $fileMountRepository->findByUid($fileMountUid);
         if (!$fileMount) {
             $this->addWarning('duplication_process.backend_user_creation.warning.wrong_mount_point_uid', 1432909510, ['s' => $fileMountUid]);
         } else {
             $flag = $this->fixFileMountForBackendUser($backendUserClone, $fileMount);
             if ($flag) {
                 $this->addNotice('duplication_process.backend_user_creation.notice.filemount_association_success', 1432909851, ['s' => $fileMount->getTitle()]);
             }
         }
     }
     // Checking if "settings.createdRecordName" can be used, use self::DEFAULT_CREATED_RECORD_NAME otherwise.
     $backendUserUid = $backendUserClone->getUid();
     $createdRecordName = $this->getProcessSettings('createdRecordName');
     $createdRecordName = !empty($createdRecordName) ? $createdRecordName : self::DEFAULT_CREATED_RECORD_NAME;
     $this->setDuplicationDataValue($createdRecordName, $backendUserUid);
 }