/// <summary>
        /// Query validation configuration
        /// </summary>
        /// <param name="appHandle">App handle</param>
        /// <returns>Validation configuration entity</returns>
        public async Task <IValidationConfigurationEntity> QueryValidationConfiguration(string appHandle)
        {
            CTStore store = await this.tableStoreManager.GetStore(ContainerIdentifier.Apps);

            ObjectTable table = this.tableStoreManager.GetTable(ContainerIdentifier.Apps, TableIdentifier.AppValidationConfigurationsObject) as ObjectTable;
            ValidationConfigurationEntity validationConfigurationEntity = await store.QueryObjectAsync <ValidationConfigurationEntity>(table, appHandle, appHandle);

            return(validationConfigurationEntity);
        }
        /// <summary>
        /// Insert app
        /// </summary>
        /// <param name="storageConsistencyMode">Storage consistency mode</param>
        /// <param name="appHandle">App handle</param>
        /// <param name="developerId">Developer id</param>
        /// <param name="name">App name</param>
        /// <param name="iconHandle">Icon handle</param>
        /// <param name="platformType">Platform type</param>
        /// <param name="deepLink">Deep link</param>
        /// <param name="storeLink">Store link</param>
        /// <param name="createdTime">Created time</param>
        /// <param name="disableHandleValidation">whether to disable validation of app-provided handles</param>
        /// <returns>Create app task</returns>
        public async Task InsertApp(
            StorageConsistencyMode storageConsistencyMode,
            string appHandle,
            string developerId,
            string name,
            string iconHandle,
            PlatformType platformType,
            string deepLink,
            string storeLink,
            DateTime createdTime,
            bool disableHandleValidation)
        {
            AppProfileEntity appProfileEntity = new AppProfileEntity()
            {
                DeveloperId             = developerId,
                Name                    = name,
                IconHandle              = iconHandle,
                PlatformType            = platformType,
                DeepLink                = deepLink,
                StoreLink               = storeLink,
                CreatedTime             = createdTime,
                LastUpdatedTime         = createdTime,
                AppStatus               = AppStatus.Active,
                DisableHandleValidation = disableHandleValidation,
            };

            IdentityProviderCredentialsEntity facebookCredentialsEntity  = new IdentityProviderCredentialsEntity();
            IdentityProviderCredentialsEntity microsoftCredentialsEntity = new IdentityProviderCredentialsEntity();
            IdentityProviderCredentialsEntity googleCredentialsEntity    = new IdentityProviderCredentialsEntity();
            IdentityProviderCredentialsEntity twitterCredentialsEntity   = new IdentityProviderCredentialsEntity();
            IdentityProviderCredentialsEntity aadCredentialsEntity       = new IdentityProviderCredentialsEntity();

            ValidationConfigurationEntity validationConfigurationEntity = new ValidationConfigurationEntity()
            {
                Enabled = false
            };

            PushNotificationsConfigurationEntity windowsPushNotificationsConfigurationEntity = new PushNotificationsConfigurationEntity()
            {
                Enabled = false
            };

            PushNotificationsConfigurationEntity androidPushNotificationsConfigurationEntity = new PushNotificationsConfigurationEntity()
            {
                Enabled = false
            };

            PushNotificationsConfigurationEntity iosPushNotificationsConfigurationEntity = new PushNotificationsConfigurationEntity()
            {
                Enabled = false
            };

            CTStore store = await this.tableStoreManager.GetStore(ContainerIdentifier.Apps);

            ObjectTable profilesTable          = this.tableStoreManager.GetTable(ContainerIdentifier.Apps, TableIdentifier.AppProfilesObject) as ObjectTable;
            ObjectTable credentialsTable       = this.tableStoreManager.GetTable(ContainerIdentifier.Apps, TableIdentifier.AppIdentityProviderCredentialsObject) as ObjectTable;
            ObjectTable validationConfigsTable = this.tableStoreManager.GetTable(ContainerIdentifier.Apps, TableIdentifier.AppValidationConfigurationsObject) as ObjectTable;
            ObjectTable pushConfigsTable       = this.tableStoreManager.GetTable(ContainerIdentifier.Apps, TableIdentifier.AppPushNotificationsConfigurationsObject) as ObjectTable;
            Transaction transaction            = new Transaction();

            transaction.Add(Operation.Insert(profilesTable, appHandle, appHandle, appProfileEntity));
            transaction.Add(Operation.Insert(credentialsTable, appHandle, IdentityProviderType.Facebook.ToString(), facebookCredentialsEntity));
            transaction.Add(Operation.Insert(credentialsTable, appHandle, IdentityProviderType.Microsoft.ToString(), microsoftCredentialsEntity));
            transaction.Add(Operation.Insert(credentialsTable, appHandle, IdentityProviderType.Google.ToString(), googleCredentialsEntity));
            transaction.Add(Operation.Insert(credentialsTable, appHandle, IdentityProviderType.Twitter.ToString(), twitterCredentialsEntity));
            transaction.Add(Operation.Insert(credentialsTable, appHandle, IdentityProviderType.AADS2S.ToString(), aadCredentialsEntity));
            transaction.Add(Operation.Insert(validationConfigsTable, appHandle, appHandle, validationConfigurationEntity));
            transaction.Add(Operation.Insert(pushConfigsTable, appHandle, PlatformType.Windows.ToString(), windowsPushNotificationsConfigurationEntity));
            transaction.Add(Operation.Insert(pushConfigsTable, appHandle, PlatformType.Android.ToString(), androidPushNotificationsConfigurationEntity));
            transaction.Add(Operation.Insert(pushConfigsTable, appHandle, PlatformType.IOS.ToString(), iosPushNotificationsConfigurationEntity));
            await store.ExecuteTransactionAsync(transaction, storageConsistencyMode.ToConsistencyMode());
        }