private IList <string> GetMatchingPidUris(Entity resource, string regexForExistingPidUris)
        {
            var matchingPidUris = new List <string>();

            var activePidUris = _pidUriTemplateRepository.GetMatchingPidUris(regexForExistingPidUris, _metadataService.GetInstanceGraph(COLID.Graph.Metadata.Constants.PIDO.PidConcept), _metadataService.GetInstanceGraph("draft"));

            matchingPidUris.AddRange(activePidUris);

            Entity resourcePidUri  = resource.Properties.GetValueOrNull(Graph.Metadata.Constants.EnterpriseCore.PidUri, true);
            Entity resourceBaseUri = resource.Properties.GetValueOrNull(Graph.Metadata.Constants.Resource.BaseUri, true);

            if (!string.IsNullOrWhiteSpace(resourcePidUri?.Id))
            {
                matchingPidUris.Add(resourcePidUri.Id);
            }

            if (!string.IsNullOrWhiteSpace(resourceBaseUri?.Id))
            {
                matchingPidUris.Add(resourceBaseUri.Id);
            }

            foreach (var property in resource.Properties)
            {
                foreach (var prop in property.Value)
                {
                    if (DynamicExtension.IsType <Entity>(prop, out Entity entity))
                    {
                        Entity nestedPidUri = entity.Properties.GetValueOrNull(Graph.Metadata.Constants.EnterpriseCore.PidUri, true);
                        if (nestedPidUri != null && !string.IsNullOrWhiteSpace(nestedPidUri.Id) && Regex.IsMatch(nestedPidUri.Id, regexForExistingPidUris))
                        {
                            matchingPidUris.Add(nestedPidUri.Id);
                        }

                        Entity nestedBaseUri = entity.Properties.GetValueOrNull(Graph.Metadata.Constants.Resource.BaseUri, true);
                        if (nestedBaseUri != null && !string.IsNullOrWhiteSpace(nestedBaseUri.Id) && Regex.IsMatch(nestedBaseUri.Id, regexForExistingPidUris))
                        {
                            matchingPidUris.Add(nestedBaseUri.Id);
                        }
                    }
                }
            }

            return(matchingPidUris);
        }