public async Task <License> CreateLicense(Entities.License license, string customerName, string contactEmail) { var additionalAttributes = new Dictionary <string, string> { { nameof(license.Name), license.Name }, { nameof(license.CreatedBy), license.CreatedBy }, { nameof(license.DateFrom), license.DateFrom.ToString() }, { nameof(license.HardwareId), HardwareInfoHelper.EncryptHardwareId(license.HardwareId) }, { nameof(license.Active), license.Active.ToString() }, { LicenseConstants.LicenseDbIdAttributeName, license.Id.ToString() } }; var productFeatures = new Dictionary <string, string> { { nameof(license.NumberOfConcurrentUserSessionsAllowed), license.NumberOfConcurrentUserSessionsAllowed.ToString() }, }; return(License.New() .WithUniqueIdentifier(Guid.NewGuid()) .As(LicenseType.Trial) .ExpiresAt(license.DateTo) .WithMaximumUtilization(license.NumberOfConcurrentUserSessionsAllowed) .WithProductFeatures(productFeatures) .WithAdditionalAttributes(additionalAttributes) .LicensedTo(customerName, contactEmail) .CreateAndSignWithPrivateKey(await this.licenseKeyService.GetPrivateKey(), LicenseConstants.PassPhrase)); }