docs: private String getUniqueName(String dn, String entityType, Attributes attrs) throws WIMException {
          final String METHODNAME = "getUniqueName";
          String uniqueName = null;
          dn = iLdapConfigMgr.switchToNode(dn);
          if (iLdapConfigMgr.needTranslateRDN() && iLdapConfigMgr.needTranslateRDN(entityType)) {
              try {
                  if (entityType != null) {
                      LdapEntity ldapEntity = iLdapConfigMgr.getLdapEntity(entityType);
                      if (ldapEntity != null) {
                          String[] rdnName = LdapHelper.getRDNAttributes(dn);
                          String[][] rdnWIMProps = ldapEntity.getWIMRDNProperties();
                          String[][] rdnWIMAttrs = ldapEntity.getWIMRDNAttributes();
                          String[][] rdnAttrs = ldapEntity.getRDNAttributes();
                          Attribute[] rdnAttributes = new Attribute[rdnWIMProps.length];
                          String[] rdnAttrValues = new String[rdnWIMProps.length];
                          for (int i = 0; i < rdnAttrs.length; i++) {
                              String[] rdnAttr = rdnAttrs[i];
                              boolean isRDN = true;
                              for (int j = 0; j < rdnAttr.length; j++) {
                                  if (!rdnAttr[j].equalsIgnoreCase(rdnName[j])) {
                                      isRDN = false;
                                  }
                              }
                              if (isRDN) {
                                  String[] rdnWIMProp = rdnWIMProps[i];
                                  String[] rdnWIMAttr = rdnWIMAttrs[i];
                                  boolean retrieveRDNs = false;
                                  if (attrs == null) {
                                      retrieveRDNs = true;
                                  } else {
                                      for (int k = 0; k < rdnWIMAttr.length; k++) {
                                          if (attrs.get(rdnWIMAttr[k]) == null) {
                                              retrieveRDNs = true;
                                              break;
                                          }
                                      }
                                  }
                                  if (retrieveRDNs) {
                                      attrs = getAttributes(dn, rdnWIMAttr);
                                  }
                                  for (int k = 0; k < rdnWIMAttr.length; k++) {
                                      rdnAttributes[k] = attrs.get(rdnWIMAttr[k]);
                                      if (rdnAttributes[k] != null) {
                                          rdnAttrValues[k] = (String) rdnAttributes[k].get();
                                      }
                                  }
                                  uniqueName = LdapHelper.replaceRDN(dn, rdnWIMProp, rdnAttrValues);
                              }
                          }
                      }
                  }
              } catch (NamingException e) {
                  String msg = Tr.formatMessage(tc, WIMMessageKey.NAMING_EXCEPTION, WIMMessageHelper.generateMsgParms(e.toString(true)));
                  throw new WIMSystemException(WIMMessageKey.NAMING_EXCEPTION, msg, e);
              }
          }
          if (uniqueName == null) {
              uniqueName = dn;
          } else {
              if (tc.isDebugEnabled()) {
                  Tr.debug(tc, METHODNAME + " Translated uniqueName: " + uniqueName);
              }
          }
          return uniqueName;
      }