/// <summary>
        /// Identifies problems with dataset governance (e.g. <see cref="Catalogue"/> which have expired <see cref="GovernancePeriod"/>)
        /// </summary>
        /// <param name="allGovernanceNode"></param>
        /// <returns></returns>
        private string DescribeProblem(AllGovernanceNode allGovernanceNode)
        {
            HashSet <int> expiredCatalogueIds = new HashSet <int>();

            //Get all expired Catalogue IDs
            foreach (KeyValuePair <int, HashSet <int> > kvp in _childProvider.GovernanceCoverage)
            {
                var gp = _childProvider.AllGovernancePeriods.Single(g => g.ID == kvp.Key);

                if (gp.IsExpired())
                {
                    foreach (var i in kvp.Value)
                    {
                        expiredCatalogueIds.Add(i);
                    }
                }
            }

            //Throw out any covered by a not expired one
            foreach (KeyValuePair <int, HashSet <int> > kvp in _childProvider.GovernanceCoverage)
            {
                var gp = _childProvider.AllGovernancePeriods.Single(g => g.ID == kvp.Key);

                if (!gp.IsExpired())
                {
                    foreach (var i in kvp.Value)
                    {
                        expiredCatalogueIds.Remove(i);
                    }
                }
            }

            var expiredCatalogues = expiredCatalogueIds.Select(id => _childProvider.AllCataloguesDictionary[id]).Where(c => !(c.IsDeprecated /* || c.IsColdStorage || c.IsInternal*/)).ToArray();

            if (expiredCatalogues.Any())
            {
                return("Governance Expired On:" + Environment.NewLine + string.Join(Environment.NewLine, expiredCatalogues.Take(5)));
            }

            //no expired governance
            return(null);
        }
 public AllGovernanceNodeMenu(RDMPContextMenuStripArgs args, AllGovernanceNode o) : base(args, o)
 {
     Add(new ExecuteCommandCreateNewGovernancePeriod(_activator));
 }