/// <summary>
        /// OMSBaseline custom checks configuration enabled predicate
        /// </summary>
        public static bool IsCustomChecksEnabled()
        {
            RemoteSecurityModuleConfiguration agentConfiguration = ((RemoteSecurityModuleConfiguration)AgentConfiguration.RemoteConfiguration);

            return(agentConfiguration.BaselineCustomChecksEnabled &&
                   !string.IsNullOrWhiteSpace(agentConfiguration.BaselineCustomChecksFilePath) &&
                   !string.IsNullOrWhiteSpace(agentConfiguration.BaselineCustomChecksFileHash));
        }
        /// <summary>
        /// Run the baseline scan and get the results as a baseline event
        /// </summary>
        /// <returns>Baseline event</returns>
        protected override List <IEvent> GetEventsImpl()
        {
            // resolve agent directory
            string agentDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

            // default baseline compliance checks payload
            List <BaselinePayload> defaultBaselinePayload = ExecuteBaseline(string.Format(BaselineExecCommandTemplate, agentDirectory)).ToList();

            if (BaselineEventGenerator.IsCustomChecksEnabled())
            {
                try
                {
                    RemoteSecurityModuleConfiguration agentConfiguration = ((RemoteSecurityModuleConfiguration)AgentConfiguration.RemoteConfiguration);

                    IEnumerable <BaselinePayload> customBaselinePayload = ExecuteBaseline(string.Format(
                                                                                              BaselineCustomCheckExecCommandTemplate,
                                                                                              agentDirectory,
                                                                                              agentConfiguration.BaselineCustomChecksFilePath,
                                                                                              agentConfiguration.BaselineCustomChecksFileHash
                                                                                              )
                                                                                          );

                    defaultBaselinePayload.AddRange(customBaselinePayload);
                }
                catch (CommandExecutionFailedException ex)
                {
                    SimpleLogger.Error($"BaselineEventGenerator failed to execute custom checks, {ex.Message}");
                }
            }

            OSBaseline osbaselineEvent = new OSBaseline(
                Priority,
                defaultBaselinePayload.ToArray()
                );

            return(new List <IEvent>()
            {
                osbaselineEvent
            });
        }