/// <summary>
        /// This method allows to check if a template can be provisioned
        /// </summary>
        /// <param name="hierarchy">The Template to hierarchy</param>
        /// <param name="sequenceId">The sequence to test within the hierarchy</param>
        /// <param name="applyingInformation">Any custom provisioning settings</param>
        /// <returns>A boolean stating whether the current object handler can be run during provisioning or if there are any missing requirements</returns>
        public static CanProvisionResult CanProvision(Model.ProvisioningHierarchy hierarchy, string sequenceId, ProvisioningTemplateApplyingInformation applyingInformation)
        {
            CanProvisionResult result = new CanProvisionResult();

            List <ICanProvisionRuleOffice365> rules = GetCanProvisionRules <ICanProvisionRuleOffice365>();

            foreach (var rule in rules)
            {
                var ruleResult = rule.CanProvision(hierarchy, sequenceId, applyingInformation);
                result.CanProvision &= ruleResult.CanProvision;
                result.Issues.AddRange(ruleResult.Issues);
            }

            return(result);
        }
        /// <summary>
        /// This method allows to check if a template can be provisioned in the currently selected target
        /// </summary>
        /// <param name="web">The target Web</param>
        /// <param name="template">The Template to provision</param>
        /// <param name="applyingInformation">Any custom provisioning settings</param>
        /// <returns>A boolean stating whether the current object handler can be run during provisioning or if there are any missing requirements</returns>
        public static CanProvisionResult CanProvision(Web web, Model.ProvisioningTemplate template, ProvisioningTemplateApplyingInformation applyingInformation)
        {
            CanProvisionResult result = new CanProvisionResult();

            List <ICanProvisionRuleSite> rules = GetCanProvisionRules <ICanProvisionRuleSite>();

            foreach (var rule in rules)
            {
                var ruleResult = rule.CanProvision(web, template, applyingInformation);
                result.CanProvision &= ruleResult.CanProvision;
                result.Issues.AddRange(ruleResult.Issues);
            }

            return(result);
        }