I have seen that the error didn't came from provisioning policy if not how the adapter is managing this attribute. I have seen in the adapter log next entries:DTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 Collection<PSObject> po:DTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 SMTP:email@example.comDTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 sip:firstname.lastname@example.orgDTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 Invoking: $8116 = (get-mailbox 'email@example.com' -DomainController 'snt0051').EmailAddressesDTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 Invoking: $8116.Add( 'SMTP:firstname.lastname@example.org' )DTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 Invoking: $8116.Add( 'sip:email@example.com' )DTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 Invoking: set-mailbox -Identity 'firstname.lastname@example.org' -EmailAddresses $8116 -DomainController 'snt0051'DTL:21/03/18 10:31:16 Thread:008116 EXCH 1004 10:31:16 Cannot process argument transformation on parameter 'EmailAddresses'. Cannot convert value "System.Collections.ArrayList" to type "Microsoft.Exchange.Data.ProxyAddressCollection". Error: "The value 'SMTP:email@example.com' is already present in the collection."Moreover, ones the account is created and conciliated by ISIM, next operations for modifying this attribute will work fine, it maybe because Exchange has created the ProxyAddress by itself.We have to find out the differences with the adapter in our testing enviroment due to it wasn't happended there.
On the other side, I don't understnad why onces the former operation failt, the server (or the adapter) run a second operation for modifying the atributtes which are wrong provisioning during the add account.
Hi Franz,from our point of view it is not linked with if the operation has to be done in one or two steps due to same operation is working in our test enviroment (of course our production and test adapters releases are the same)DTL:21/03/24 14:09:39 Thread:003972 EXCH 35 02:09:39 Collection<PSObject> po:DTL:21/03/24 14:09:39 Thread:003972 EXCH 35 02:09:39 SMTP:firstname.lastname@example.orgDTL:21/03/24 14:09:39 Thread:003972 EXCH 35 02:09:39 Invoking: $3972 = (get-mailbox 'email@example.com' -DomainController 'svm0613').EmailAddressesDTL:21/03/24 14:09:39 Thread:003972 EXCH 35 02:09:39 Invoking: $3972.Add( 'sip:firstname.lastname@example.org' )DTL:21/03/24 14:09:39 Thread:003972 EXCH 35 02:09:39 Invoking: $3972.Add( 'SMTP:email@example.com' )DTL:21/03/24 14:09:40 Thread:003972 EXCH 35 02:09:39 Invoking: set-mailbox -Identity 'firstname.lastname@example.org' -EmailAddresses $3972 -DomainController 'svm0613'DTL:21/03/24 14:09:40 Thread:003972 EXCH 35 02:09:40 Invoking: Remove-variable -name 3972We are looking in depth if there is relation with Lync attributes management, although again, our PROD and TEST enviroments look like to be configured the same way (we have to certifiy this point)Thanks for your support. I keep you posted.
PS I remembered when Exchange and AD were 2 differents adapters.
Hi ISIM colleages,
once we have found out the issue, we would like to share with you.
It is important to stress that the error came from how the ProxyAddress attribute is managed in AD and it is only important if the ProxyAddress values have to be enforced.
When a personal mailbox is generated to the user or when a Lync/skype account is created, Exchange provisions automatically new values in the ProxyAddress. In other words, when some values are provisioned into the "SMTP Address" or/and "SIP Address" AD attributes, Exchange includes the same values in the "ProxyAddress" attribute.
If the provisioning policies define some values in the ProxyAddress, when the ISIM adapter tries to incorporate those values after the mailbox/Lync creation, an error is risen since those values are already existed: "The value 'SMTP:email@example.com' is already present in the collection."
How to fix it.
var myAccount = (new AccountSearch()).searchByUidAndService(parameters.eruid,service.name);
if ((myAccount != null) && (myAccount.length > 0))
if ((myAccount.getProperty("eradlyncsipadr") != null) && (myAccount.getProperty("eradlyncsipadr").length > 0))
eropmultireplace: modify=st,postofficebox,mail,telephonenumber,homephone,mobile,description,cn,title,l,pager,postalcode,street,givenname,sn,erADLoginWorkst ations,erADEProxyddresses
In the adapter log can be seen how a Clear() is done before the Add() of values in the ProxyAddress
DBG:21/06/08 14:46:19 Thread:006688 Attribute operation type is replace so clearing the idlist to fill new set of values
DTL:21/06/08 14:46:19 Thread:006688 EXCH 32 02:46:19 Invoking: $6688.Clear()
I hope it could be interesting for you.