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));
        }