public Field fieldGroupFieldsAdded( @Optional DomainEvent event, Field fieldGroup, String id, Field fieldGroupField) { FieldValueDefinition.Data definition = (FieldValueDefinition.Data) fieldGroupField; EntityBuilder<Field> fieldBuilder = module.unitOfWorkFactory().currentUnitOfWork().newEntityBuilder(Field.class, id); fieldBuilder.instanceFor(Mandatory.Data.class).mandatory().set(fieldGroupField.isMandatory()); fieldBuilder.instanceFor(Notable.Data.class).note().set(fieldGroupField.getNote()); fieldBuilder .instanceFor(Describable.Data.class) .description() .set(fieldGroupField.getDescription()); fieldBuilder .instanceFor(Datatype.Data.class) .datatype() .set(((Datatype.Data) fieldGroupField).datatype().get()); fieldBuilder .instanceFor(Statistical.Data.class) .statistical() .set(((Statistical.Data) fieldGroupField).statistical().get()); FieldValue fieldValue = definition.fieldValue().get(); fieldBuilder.instanceFor(FieldValueDefinition.Data.class).fieldValue().set(fieldValue); String fieldId = Classes.interfacesOf(fieldValue.getClass()).iterator().next().getSimpleName(); fieldId = fieldGroup.getDescription() + "_" + fieldId.substring(0, fieldId.length() - "FieldValue".length()); fieldId += data.groupFields().count() + 1; fieldBuilder.instanceFor(FieldId.Data.class).fieldId().set(fieldId); Field createdFieldGroupField = fieldBuilder.newInstance(); return createdFieldGroupField; }