docs: public void initialize(Map<String, Object> configProps) throws WIMException {
          final String METHODNAME = "initialize(configProps)";
          iLdapType = (String) configProps.get(ConfigConstants.CONFIG_PROP_LDAP_SERVER_TYPE);
          if (iLdapType == null) {
              iLdapType = ConfigConstants.CONFIG_LDAP_IDS52;
          } else {
              iLdapType = iLdapType.toUpperCase();
          }
  
          /*
           * Initialize certificate mapping.
           */
          setCertificateMapMode((String) configProps.get(ConfigConstants.CONFIG_PROP_CERTIFICATE_MAP_MODE));
          if (ConfigConstants.CONFIG_VALUE_FILTER_DESCRIPTOR_MODE.equalsIgnoreCase(getCertificateMapMode())) {
  
              setCertificateFilter((String) configProps.get(ConfigConstants.CONFIG_PROP_CERTIFICATE_FILTER));
  
          }
  
          List<HashMap<String, String>> baseEntries = new ArrayList<HashMap<String, String>>();
  
          // Add the default (first base entry)
          String baseDN = (String) configProps.get(BASE_DN);
          String name = (String) configProps.get(BASE_ENTRY_NAME);
          HashMap<String, String> baseEntryMap = new HashMap<String, String>();
          if (name != null)
              baseEntryMap.put(name, baseDN);
          else
              baseEntryMap.put(baseDN, baseDN);
  
          baseEntries.add(baseEntryMap);
  
          Map<String, List<Map<String, Object>>> configMap = Nester.nest(configProps, BASE_ENTRY,
                                                                         LDAP_ENTITY_TYPE,
                                                                         GROUP_PROPERTIES);
  
          // Add any additional base entries configured.
          for (Map<String, Object> entry : configMap.get(BASE_ENTRY)) {
              baseDN = (String) entry.get(BASE_DN);
              name = (String) entry.get(BASE_ENTRY_NAME);
              if (baseDN == null || baseDN.trim().length() == 0) {
                  //TODO correct error?
                  Tr.error(tc, WIMMessageKey.INVALID_BASE_ENTRY_DEFINITION, name);
              } else {
                  baseEntryMap = new HashMap<String, String>();
                  if (name != null) {
                      baseEntryMap.put(name, baseDN);
                  } else {
                      baseEntryMap.put(baseDN, baseDN);
                  }
                  baseEntries.add(baseEntryMap);
              }
          }
  
          // Set the timestampFormat
          if (configProps.containsKey(ConfigConstants.TIMESTAMP_FORMAT))
              timestampFormat = (String) configProps.get(ConfigConstants.TIMESTAMP_FORMAT);
          else
              timestampFormat = null;
  
          setNodes(baseEntries);
          setLDAPEntities(configMap.get(LDAP_ENTITY_TYPE), baseEntries);
  
          List<Map<String, Object>> groupPropList = configMap.get(GROUP_PROPERTIES);
          Map<String, Object> groupProps = groupPropList.isEmpty() ? Collections.<String, Object> emptyMap() : groupPropList.get(0);
          // TODO:: This seems to have been taken out.
          // setUpdateGroupMembership(configProps, configAdmin);
          setMemberAttributes(groupProps);
          setMembershipAttribute(groupProps);
          setDynaMemberAttributes(groupProps);
          setGroupSearchScope(configProps);
  
          setAttributes(configProps);
          setExtIdAttributes(configProps);
  //        setRDNProperties(configProps);
          setConfidentialAttributes();
          //setGroupMemberFilter();
          setLoginProperties((String) configProps.get(ConfigConstants.CONFIG_PROP_LOGIN_PROPERTIES));
          setFilters(configProps);
          setGroupMemberFilter();
  
          // TODO:: This is also deleted?
          // iNeedTranslateRDN = reposConfig.getBoolean(ConfigConstants.CONFIG_PROP_TRANSLATE_RDN);
  
          // CUSTOM PROPERTY
          useEncodingInSearchExpression = AccessControllerHelper.getSystemProperty(ConfigConstants.CONFIG_CUSTOM_PROP_USE_ENCODING_IN_SEARCH_EXPRESSION);
          if (useEncodingInSearchExpression != null) {
              try {
                  "string to test encoding".getBytes(useEncodingInSearchExpression);
              } catch (UnsupportedEncodingException e) {
                  if (tc.isDebugEnabled())
                      Tr.debug(tc, METHODNAME + " java.io.UnsupportedEncodingException: " + e.getMessage());
                  useEncodingInSearchExpression = "ISO8859_1"; // Default
              }
          }
          entityTypeProps.add("parent");
          entityTypeProps.add("children");
          entityTypeProps.add("members");
  
          if (tc.isDebugEnabled()) {
              StringBuffer strBuf = new StringBuffer();
              strBuf.append("\n\nLDAPServerType: ").append(iLdapType).append("\n");
              strBuf.append("Nodes: ").append(WIMTraceHelper.printObjectArray(iNodes)).append("\n");
              strBuf.append("ReposNodes: ").append(WIMTraceHelper.printObjectArray(iLdapNodes)).append("\n");
              strBuf.append("TopReposNodes: ").append(WIMTraceHelper.printObjectArray(iTopLdapNodes)).append("\n");
              strBuf.append("NeedSwitchNode: ").append(iNeedSwitchNode).append("\n");
              strBuf.append("LDAPEntities: ").append("\n");
              for (int i = 0; i < iLdapEntities.size(); i++) {
                  strBuf.append("   " + iLdapEntities.get(i).toString()).append("\n");
              }
  
              strBuf.append("GroupMemberAttrs: ").append(iMbrAttrMap).append("\n");
              strBuf.append("   memberAttrs: ").append(WIMTraceHelper.printObjectArray(iMbrAttrs)).append("\n");
              strBuf.append("   scopes: ").append(WIMTraceHelper.printPrimitiveArray(iMbrAttrScope)).append("\n");
              strBuf.append("GroupMemberFilter: ").append(iGrpMbrFilter).append("\n");
              strBuf.append("GroupDynaMemberAttrs: ").append(iDynaMbrAttrMap).append("\n");
              strBuf.append("DynaGroupFilter: ").append(iDynaGrpFilter).append("\n");
              strBuf.append("GroupMembershipAttrs: ").append(iMembershipAttrName).append("\n");
              strBuf.append("   scope: ").append(iMembershipAttrScope).append("\n");
  
              strBuf.append("PropToAttrMap: ").append(iPropToAttrMap).append("\n");
              strBuf.append("AttrToPropMap: ").append(iAttrToPropMap).append("\n");
              strBuf.append("ExtIds: ").append(iExtIds).append("\n");
              strBuf.append("AllAttrs: ").append(iAttrs).append("\n");
              strBuf.append("LoginAttrs: ").append(iLoginAttrs).append("\n");
              strBuf.append("iUserFilter: ").append(iUserFilter).append("\n");
              strBuf.append("iGroupFilter: ").append(iGroupFilter).append("\n");
              strBuf.append("iUserIdMap: ").append(iUserIdMap).append("\n");
              strBuf.append("iGroupIdMap: ").append(iGroupIdMap).append("\n");
              strBuf.append("iGroupMemberIdMap: ").append(iGroupMemberIdMap).append("\n");
              Tr.debug(tc, METHODNAME + strBuf.toString());
          }
      }