def extract_properties_by_schema(group_objects_list, group_gid_number_attr, group_name_attr):
    """
    Safeguard Authentication Services is designed to support any Active Directory schema
    configuration. If your Active Directory schema has built-in support for Unix attributes
    (Windows 2003 R2 schema, SFU schema), Safeguard Authentication Services automatically
    uses one of these schema configurations. Examples of group_object:
    {
        "DistinguishedName": "CN=AutoEnrollGroup,CN=Users,DC=QASDEV,DC=oi",
        "Name": "AutoEnrollGroup",
        "ObjectClass": "group",
        "ObjectGUID": "fe8d95e1-d620-4661-bc14-a7ae5b172956",
        "gidNumber": 641753664,
        "sAMAccountName": "AutoEnrollGroup"
    },
    {
        "DistinguishedName": "CN=TestGroup,CN=Users,DC=QASDEV,DC=oi",
        "Name": "TestGroup",
        "ObjectClass": "group",
        "ObjectGUID": "619b9645-8a92-4584-bb82-b4818be77e54",
        "gidNumber": 10001,
        "sAMAccountName": "TestGroup"
    },
    """

    attrs = ['DistinguishedName', group_name_attr, group_gid_number_attr]
    groups = []
    for group_object in group_objects_list:
        group = []
        for attr in attrs:
            if attr in group_object and group_object[attr]:
                group.append(group_object[attr])
            else:
                group.append('')
        # A Group object is considered to be 'Unix-enabled' if it has values for
        # the Group GID Number and Group Name.
        if group[1] and group[2]:
            groups.append(group)

    return groups