private void registerAdministratorFor( Tenant aTenant, FullName anAdministorName, EmailAddress anEmailAddress, PostalAddress aPostalAddress, Telephone aPrimaryTelephone, Telephone aSecondaryTelephone) { RegistrationInvitation invitation = aTenant.offerRegistrationInvitation("init").openEnded(); String strongPassword = DomainRegistry.passwordService().generateStrongPassword(); User admin = aTenant.registerUser( invitation.invitationId(), "admin", strongPassword, Enablement.indefiniteEnablement(), new Person( aTenant.tenantId(), anAdministorName, new ContactInformation( anEmailAddress, aPostalAddress, aPrimaryTelephone, aSecondaryTelephone))); aTenant.withdrawInvitation(invitation.invitationId()); this.userRepository().add(admin); Role adminRole = aTenant.provisionRole("Administrator", "Default " + aTenant.name() + " administrator."); adminRole.assignUser(admin); this.roleRepository().add(adminRole); DomainEventPublisher.instance() .publish( new TenantAdministratorRegistered( aTenant.tenantId(), aTenant.name(), anAdministorName, anEmailAddress, admin.username(), strongPassword)); }