public Guid Create(Stream stream) { if (stream is null) { throw new ArgumentNullException(nameof(stream)); } Guid processIdentifier = processRepository.Create(); int blobIdentifier = blobService.Load(stream, processIdentifier.ToString()); processRepository.AssignBlob(processIdentifier, blobIdentifier); ProcessStatus processStatus = ProcessStatus.Started; processRepository.UpdateStatus(processIdentifier, processStatus); try { Stream processed = process.Process(processIdentifier); blobService.AssingBlobProcessed(blobIdentifier, processed); processStatus = ProcessStatus.Succeded; } catch (Exception ex) { processStatus = ProcessStatus.Failed; } finally { processRepository.UpdateStatus(processIdentifier, processStatus); } return(processIdentifier); }