public void fromDTO(StateChange stateChange) {

    super.fromDTO(stateChange);

    List<Object> orphansToDelete = new ArrayList<Object>();
    setEffectiveDate(stateChange.getEffectiveDate());
    setExpirationDate(stateChange.getExpirationDate());
    setFromStateKey(stateChange.getFromStateKey());
    setToStateKey(stateChange.getToStateKey());

    if (stateChange.getStateConstraintIds() != null) {
      stateConstraintIds = new ArrayList<String>(stateChange.getStateConstraintIds());
    } else {
      stateConstraintIds = null;
    }

    if (stateChange.getStatePropagationIds() != null) {
      statePropagationIds = new ArrayList<String>(stateChange.getStatePropagationIds());
    } else {
      statePropagationIds = null;
    }

    // Merge attributes into entity and add leftovers to be deleted
    orphansToDelete.addAll(
        TransformUtility.mergeToEntityAttributes(
            StateChangeAttributeEntity.class, stateChange, this));
  }