public BacklogItem storeBacklogItem(
      int backlogItemId,
      int backlogId,
      BacklogItem dataItem,
      Set<Integer> responsibles,
      int iterationGoalId)
      throws ObjectNotFoundException {
    BacklogItem item = null;
    if (backlogItemId > 0) {
      item = backlogItemDAO.get(backlogItemId);
      if (item == null) {
        throw new ObjectNotFoundException("backlogItem.notFound");
      }
    }
    Backlog backlog = backlogBusiness.getBacklog(backlogId);
    if (backlog == null) {
      throw new ObjectNotFoundException("backlog.notFound");
    }

    IterationGoal iterationGoal = null;
    if (iterationGoalId > 0 && backlog instanceof Iteration) {
      iterationGoal = iterationGoalDAO.get(iterationGoalId);
      if (iterationGoal == null) {
        throw new ObjectNotFoundException("iterationGoal.notFound");
      }
    }

    Set<User> responsibleUsers = new HashSet<User>();

    for (int userId : responsibles) {
      User responsible = userBusiness.getUser(userId);
      if (responsible != null) {
        responsibleUsers.add(responsible);
      }
    }

    return this.storeBacklogItem(item, backlog, dataItem, responsibleUsers, iterationGoal);
  }