final Date meetingDate = command.DateValueOfParameterNamed(meetingDateParamName);
try {
final CalendarInstance calendarInstance = getCalendarInstance(command);
// create new meeting
final Meeting newMeeting = Meeting.createNew(calendarInstance, meetingDate);
final Collection<ClientAttendance> clientsAttendance = getClientsAttendance(newMeeting, command);
if (clientsAttendance != null && !clientsAttendance.isEmpty()) {
newMeeting.associateClientsAttendance(clientsAttendance);
}
// save meeting details
this.meetingRepositoryWrapper.save(newMeeting);
final Long groupId = newMeeting.isGroupEntity() ? newMeeting.entityId() : null;
return new CommandProcessingResultBuilder() //
.withEntityId(newMeeting.getId()) //
.withGroupId(groupId).build();
} catch (final DataIntegrityViolationException dve) {
handleMeetingDataIntegrityIssues(meetingDate, dve);
return new CommandProcessingResultBuilder() //