/**
  * {@inheritDoc}
  * @throws \Doctrine\DBAL\ConnectionException
  */
 protected function onSuccess(AbstractRole $role, array $appendUsers, array $removeUsers)
 {
     // TODO: When task BB-1046 will be done, remove method removeOriginalRoleFromUsers.
     // In method addNewRoleToUsers before addRole add method removeRole($role). Also needs delete flush;
     /** @var AccountUserRole $role */
     if ($role->getId()) {
         /** @var AccountUserRoleRepository $roleRepository */
         $roleRepository = $this->doctrineHelper->getEntityRepository($role);
         $this->appendUsers = $roleRepository->getAssignedUsers($role);
     }
     $this->loggedAccountUser = $this->securityFacade->getLoggedUser();
     /** @var EntityManager $manager */
     $manager = $this->managerRegistry->getManagerForClass(ClassUtils::getClass($this->loggedAccountUser));
     $connection = $manager->getConnection();
     $connection->setTransactionIsolation(Connection::TRANSACTION_REPEATABLE_READ);
     $connection->beginTransaction();
     try {
         $this->removeOriginalRoleFromUsers($role, $manager);
         AclRoleHandler::onSuccess($this->newRole, $appendUsers, $removeUsers);
         $this->addNewRoleToUsers($role, $manager, $appendUsers, $removeUsers);
         $manager->flush();
         $connection->commit();
     } catch (\Exception $e) {
         $connection->rollBack();
         throw $e;
     }
 }