public dynamic CreateSubscription(int subscriptionTypeId, string applicationIdentifier, string name = null, int?billingSystemType = null, string billingSystemIdentifier = null)
        {
            var config = GetConfiguration();

            if (config?.SubscriptionTypes == null || config.SubscriptionTypes.Count == 0)
            {
                throw new Exception("Missing configuration or subscription types, no subscription types found");
            }
            var subscriptionType = config.SubscriptionTypes.FirstOrDefault(x => x.Id == subscriptionTypeId);

            if (subscriptionType == null)
            {
                throw new Exception($"Subscription type with id of: {subscriptionTypeId} was not found");
            }

            var model = new SubscriberModel
            {
                ApplicationId           = applicationIdentifier,
                BillingSystemType       = billingSystemType ?? subscriptionType.BillingSystemType,
                BillingSystemIdentifier = billingSystemIdentifier,
                CompanyId                     = config.Company.Id,
                DefaultGracePeriod            = subscriptionType.DefaultGracePeriod,
                DefaultNeverExpire            = subscriptionType.DefaultNeverExpire,
                DefaultResetFeaturesOnRenewal = subscriptionType.DefaultResetFeaturesOnRenewal,
                DefaultRevertOnExpiration     = subscriptionType.DefaultRevertOnExpiration,
                DefaultRevertTo               = subscriptionType.DefaultRevertTo,
                Name               = name,
                Version            = VersionNumber,
                IsActive           = true,
                SubscriptionTypeId = subscriptionType.Id,
                Features           = subscriptionType.Features,
                ExpirationDate     = DateTime.UtcNow.AddTicks(subscriptionType.TimeToExpireTicks.GetValueOrDefault())
            };

            var result        = _webClientService.CreateSubscription(model);
            var newSubscriber = JsonConvert.DeserializeObject <SubscriberModel>(result);

            if (newSubscriber == null)
            {
                return(null);
            }
            StorageMethod.AddOrUpdateSubscriber(newSubscriber);
            _cache.Add(_cacheAppId + newSubscriber.ApplicationId, newSubscriber, MyCachePriority.Default);
            _cache.Add(_cacheKey + newSubscriber.Key, newSubscriber, MyCachePriority.Default);
            return(newSubscriber.ToDynamic());
        }