private void connectIndirections(IndirectionsMetaData metaData, String oneDN, List<String> theOtherDNs) {
    	if (StringUtils.isEmpty(oneDN) || CollectionUtils.isEmpty(theOtherDNs)) {
    		LogUtils.debug(LOG, "connectIndirections: either one or theOther is empty, do nothing.");
    		return;
    	}
    	
    	LogUtils.debug(LOG, "connect " + oneDN + " and " + theOtherDNs);
    	
    	try {
    		ctx.modifyAttributes(oneDN, new ModificationItem[] {
    			ModUtils.add(metaData.getOne().getIndirectionAttr(), theOtherDNs)
    		});
    		LogUtils.debug(LOG, String.format("connected: %s -> %s", oneDN, theOtherDNs));
    		
    		for (String theOtherDN : theOtherDNs) {
    			String indirectionAttr = metaData.getTheOther().dnToIndirectionAttr(theOtherDN);
    			if (null == indirectionAttr) {
    				LogUtils.debug(LOG, "no corresponding indirection configured for " + theOtherDN);
    				continue;
    			}
    			
    			ctx.modifyAttributes(theOtherDN, new ModificationItem[] {
    				ModUtils.add(indirectionAttr, oneDN)
    			});
    			LogUtils.debug(LOG, String.format("connected: %s -> %s", theOtherDN, oneDN));
    		}
    	} catch (NamingException e) {
    		throw new SessionException(e.getMessage(), e);
    	}
    }