@Override
  void ensureSystemFolderExists() throws ServiceException {
    lock.lock();
    try {
      super.ensureSystemFolderExists();
      try {
        getFolderById(ID_FOLDER_NOTIFICATIONS);
      } catch (NoSuchItemException e) {
        Folder.FolderOptions fopt =
            new Folder.FolderOptions().setAttributes(Folder.FOLDER_IS_IMMUTABLE);

        CreateFolder redo =
            new CreateFolder(getId(), NOTIFICATIONS_PATH, ID_FOLDER_USER_ROOT, fopt);

        redo.setFolderIdAndUuid(ID_FOLDER_NOTIFICATIONS, UUIDUtil.generateUUID());
        redo.start(System.currentTimeMillis());
        createFolder(new TracelessContext(redo), NOTIFICATIONS_PATH, ID_FOLDER_USER_ROOT, fopt);
      }
      OfflineProvisioning prov = OfflineProvisioning.getOfflineInstance();
      for (String accountId : prov.getAllAccountIds()) {
        Account acct = prov.get(AccountBy.id, accountId);
        if (acct == null || prov.isGalAccount(acct) || prov.isMountpointAccount(acct)) continue;
        try {
          getFolderByName(null, ID_FOLDER_NOTIFICATIONS, accountId);
        } catch (NoSuchItemException e) {
          createMountpoint(
              null,
              ID_FOLDER_NOTIFICATIONS,
              accountId,
              accountId,
              ID_FOLDER_USER_ROOT,
              null,
              MailItem.Type.UNKNOWN,
              0,
              MailItem.DEFAULT_COLOR_RGB,
              false);
        }
      }
    } finally {
      lock.release();
    }
  }