It appears this is the job of the task class. You would have view object encapsulating all the objects that are needed and then you can pull the objects together in the task, validate, map then persist them.
public ActionConfirmation<SupportTicket> Open(SupportTicketFormDto supportTicketFormDto) {
if (supportTicketFormDto == null) throw new ArgumentNullException("supportTicketFormDto is null");
if (!DataAnnotationsValidator.TryValidate(supportTicketFormDto))
throw new InvalidOperationException("supportTicketFormDto is in an invalid state");
var supportTicketToSave = supportTicketFormDto.Id > 0
? _supportTicketRepository.Get(supportTicketFormDto.Id)
: CreateNewSupportTicket(supportTicketFormDto);
TransferFormValuesTo(supportTicketToSave, supportTicketFormDto);
var customerConfirmationMessage = HandleNewCustomer(supportTicketFormDto.NewCustomer, supportTicketToSave);
var issueConfirmationMessage = HandleNewIssueType(supportTicketFormDto.NewIssueType, supportTicketToSave);
_supportTicketRepository.SaveOrUpdate(supportTicketToSave);
return ActionConfirmation<SupportTicket>
.CreateSuccessConfirmation("Support ticket #" + supportTicketToSave.Id + " has been opened." +
customerConfirmationMessage + issueConfirmationMessage, supportTicketToSave);