public async Task<PersonResponseObject> ExecuteAsync(UpdatePersonRequestObject personRequestObject, string requestBody, Token token, PersonQueryObject query, int? ifMatch) { var result = await _gateway.UpdatePersonByIdAsync(personRequestObject, requestBody, query, ifMatch).ConfigureAwait(false); if (result is null) return null; // Only raise the event if something actually changed. if (result.NewValues.Any()) { var personSnsMessage = _snsFactory.Update(result, token); var topicArn = Environment.GetEnvironmentVariable("PERSON_SNS_ARN"); await _snsGateway.Publish(personSnsMessage, topicArn).ConfigureAwait(false); } return _responseFactory.ToResponse(result.UpdatedEntity.ToDomain()); }