public void moveItemToBacklog(BacklogItem item, Backlog backlog, boolean ignoreIterationGoal) {

    Backlog oldBacklog = item.getBacklog();
    oldBacklog.getBacklogItems().remove(item);
    item.setBacklog(backlog);
    backlog.getBacklogItems().add(item);
    historyBusiness.updateBacklogHistory(oldBacklog.getId());
    historyBusiness.updateBacklogHistory(backlog.getId());

    if (item.getIterationGoal() != null && !ignoreIterationGoal) {
      item.getIterationGoal().getBacklogItems().remove(item);
      item.setIterationGoal(null);
    }

    if (!backlogBusiness.isUnderSameProduct(oldBacklog, backlog)) {
      // remove only product themes
      Collection<BusinessTheme> removeThese = new ArrayList<BusinessTheme>();
      ;
      for (BusinessTheme theme : item.getBusinessThemes()) {
        if (!theme.isGlobal()) {
          removeThese.add(theme);
        }
      }
      for (BusinessTheme theme : removeThese) {
        item.getBusinessThemes().remove(theme);
      }
    }
  }