我正在使用
LSC
将 OpenLDAP
同步到 AD DS
。我需要将两个属性从 OpenLDAP
同步到 AD DS 中的一个 (proxyaddresses
),并在属性之前添加“smtp:”。仅当属性在OpenLDAP
中不为空时才需要发送。
<dataset> <name>proxyAddresses</name> <!-- Add proxyAddresses from employeeType and employeeNumber and mail -->
<policy>FORCE</policy>
<forceValues>
<string>js:(srcBean.getDatasetFirstValueById("employeeType") != null ? (("smtp:") + (srcBean.getDatasetFirstValueById("employeeType"))) : null) </string>
</forceValues>
</dataset>
以上不起作用。当OpenLDAP中的属性employeeType为空时,它仅同步“smtp:”。
如何将属性与前缀同步,但仅当属性不为空时?
从 OpenLDAP 更改属性很累。
解决方案是为所有三个属性制作 rjs 脚本:
<dataset>
<name>proxyAddresses</name>
<policy>FORCE</policy>
<forceValues>
<string>
<![CDATA[rjs:
var number = "smtp:" + srcBean.getDatasetValuesById("employeeNumber");
var str = number.toString().toLowerCase();
var emptystr = str.replace("[", "").replace("]", "");
if (srcBean.getDatasetValuesById("employeeNumber") != null && !srcBean.getDatasetValuesById("employeeNumber").isEmpty()) {
emptystr;
} else {
null;
}
]]>
</string>
<string>
<![CDATA[rjs:
var type = "smtp:" + srcBean.getDatasetValuesById("employeeType");
var str2 = type.toString().toLowerCase();
var emptystr2 = str2.replace("[", "").replace("]", "");
if (srcBean.getDatasetValuesById("employeeType") != null && !srcBean.getDatasetValuesById("employeeType").isEmpty()) {
emptystr2;
} else {
null;
}
]]>
</string>
<string>
<![CDATA[rjs:
var umail = "SMTP:" + srcBean.getDatasetValuesById("mail");
var str3 = umail.toString();
var emptystr3 = str3.replace("[", "").replace("]", "");
if (srcBean.getDatasetValuesById("mail") != null && !srcBean.getDatasetValuesById("mail").isEmpty()) {
emptystr3;
} else {
null;
}
]]>
</string>
</forceValues>
</dataset>