public async Task <Group> RegisterAsync(String name, UserSession loggedUserSession) { Group group = new Group(); group.Name = name; group.OwnerUserId = loggedUserSession.UserId; group.Members = new List <string>() { loggedUserSession.UserId }; if (!StringUtils.hasText(group.Name)) { throw new ValidationException("Name is required"); } await groupRepository.InsertAsync(group); // register the topic! Destination destinationGroup = new Destination(DestinationType.Group, group.Id); await messageSender.RegisterDestinationAsync(destinationGroup); // register the owner as member await messageSender.RegisterDestinationListenerAsync( new Destination(DestinationType.Group, group.Id), new Destination(DestinationType.User, loggedUserSession.UserId)); return(group); }