@Override
  public List<RoleMembership> getRoleMembersFromDerivedRole(
      String namespaceCode, String roleName, Map<String, String> qualification) {
    validateRequiredAttributesAgainstReceived(qualification);

    List<RoleMembership> members = new ArrayList<RoleMembership>();

    String protocolNumber = qualification.get(KcKimAttributes.PROTOCOL);
    ProtocolBase protocol = getProtocol(protocolNumber);

    if (protocol != null && CollectionUtils.isNotEmpty(protocol.getProtocolPersons())) {
      for (ProtocolPersonBase person : protocol.getProtocolPersons()) {
        if (StringUtils.equals(person.getProtocolPersonRoleId(), roleName)
            && StringUtils.isNotBlank(person.getPerson().getPersonId())) {
          members.add(
              RoleMembership.Builder.create(
                      null, null, person.getPerson().getPersonId(), MemberType.PRINCIPAL, null)
                  .build());
        }
      }
    }

    return members;
  }