public async Task <String> ValidateAsync(String input)
        {
            String validationMessage = null;
            var    returnGroups      = new FieldValueList <Group>();

            if (!String.IsNullOrWhiteSpace(input))
            {
                try
                {
                    input = input.Trim(Constant.ViolationDelimiter.ToCharArray()[0]);
                    var groupList        = input.Split(Constant.ViolationDelimiter.ToCharArray()[0]);
                    var missingGroupList = new List <String>();
                    var query            = new ArtifactQueries();
                    var groupQueryResult = await query.QueryGroupsAsync(_apiOptions, _groupRepository, groupList);

                    if (groupQueryResult.Success && groupQueryResult.Results.Count > 0)
                    {
                        var results = groupQueryResult.Results;
                        foreach (var group in groupList)
                        {
                            var matchingGroup = results.FirstOrDefault(x => x.Artifact.Name == group.Trim());
                            if (matchingGroup == null)
                            {
                                missingGroupList.Add(group);
                            }
                            else
                            {
                                returnGroups.Add(new Group(matchingGroup.Artifact.ArtifactID));
                            }
                        }

                        if (missingGroupList.Any())
                        {
                            validationMessage = String.Format(Constant.Messages.Violations.GroupDoesNotExist, String.Join(Constant.ViolationDelimiter, missingGroupList));
                        }
                    }
                    else if (groupQueryResult.Success)
                    {
                        validationMessage = String.Format(Constant.Messages.Violations.GroupDoesNotExist, input);
                    }
                    else
                    {
                        validationMessage = groupQueryResult.Message;
                    }
                }
                catch (Exception ex)
                {
                    validationMessage = String.Format(Constant.Messages.Violations.Exception, $"querying the following querying the groups related to this user: {input}", ex);
                }
            }
            _callback(returnGroups);

            return(validationMessage);
        }