public async Task <ContactBoolResponse> Handle(CreateContactRequest createContactRequest, CancellationToken cancellationToken)
        {
            var response   = new ContactBoolResponse(true);
            var newContact = Mapper.Map <Contact>(createContactRequest);

            newContact.OrganisationId = null;
            newContact.Status         = ContactStatus.New;
            newContact.SignInType     = "ASLogin";
            newContact.Title          = "";
            newContact.GivenNames     = createContactRequest.GivenName;

            var existingContact = await _contactRepository.GetContact(newContact.Email);

            if (existingContact == null)
            {
                Contact contactResponse;
                try
                {
                    contactResponse = await _contactRepository.CreateNewContact(newContact);
                }
                catch (Exception e)
                {
                    _logger.LogInformation($"CreateContactHandler Error: {e.Message} {e.StackTrace} {e.InnerException?.Message}");
                    throw;
                }

                var invitationResult = await _signInService.InviteUser(createContactRequest.Email, createContactRequest.GivenName, createContactRequest.FamilyName, contactResponse.Id);

                if (!invitationResult.IsSuccess)
                {
                    if (invitationResult.UserExists)
                    {
                        await _contactRepository.UpdateSignInId(contactResponse.Id, invitationResult.ExistingUserId);

                        response.Result = true;
                        return(response);
                    }
                    response.Result = false;
                    return(response);
                }
            }
            else
            {
                var invitationResult = await _signInService.InviteUser(createContactRequest.Email, createContactRequest.GivenName, createContactRequest.FamilyName, existingContact.Id);

                if (!invitationResult.IsSuccess)
                {
                    if (invitationResult.UserExists)
                    {
                        await _contactRepository.UpdateSignInId(existingContact.Id, invitationResult.ExistingUserId);

                        response.Result = true;
                        return(response);
                    }
                    response.Result = false;
                    return(response);
                }
            }
            return(response);
        }