/**
   * Updates the organisation reference and also any SubOrg links
   *
   * @param newParent
   * @param session
   */
  public void setOrganisation(Organisation newParent, Session session) {
    log.info("setOrganisation: this=" + getOrgId());
    Organisation oldParent = this.getOrganisation();
    if (oldParent != null) {
      oldParent.getChildOrgs().remove(this);
    }
    if (newParent != null) {
      if (newParent.getChildOrgs() == null) {
        newParent.setChildOrgs(new ArrayList<Organisation>());
      }
      newParent.getChildOrgs().add(this);
    }

    this.organisation = newParent;

    if (oldParent != null && oldParent != newParent) {
      log.info("update subs");
      SubOrg.updateSubOrgs(this, SessionManager.session());
    }
    if (oldParent != null) {
      session.save(oldParent);
    }
    if (newParent != null) {
      session.save(newParent);
    }
    session.save(this);
    log.info("finished move");
  }