Adding attributes to the Exchange details templates (revisited)
I am updating this post. Microsoft Escalation Engineer Dave Goldman has posted some suggestions on his blog about this topic and emphasizes that the types of changes I am telling you about here are NOT within the boundaries of Microsoft's support obligations.
On a number of occasions, I have had to add and modify the Exchange details template to change attribute names or to their label names in the template. Any Exchange administrator with Exchange Admins rights to the Exchange organization can modify these templates. I discussed modifying these templates in Exchange Server 2003 24seven.
However, sometimes when you need to add new "Edit" fields to the template, not all Active Directory attributes are available when you list the available attributes. Microsoft Knowledge Base article 313962 "How to modify Exchange 2000 or Exchange 2003 details templates" shows how to customize the msExchCustomAttributes object so that additional attributes will show up when you edit the details templates.
In article 313962, step 7 shows the following text:
Note For the attributes to appear correctly in the details templates, you must add attributes that have an associated MAPI identifier (ID). To verify that an Active Directory attribute has an associated MAPI ID, you can use the ADSI Edit utility to view the optional mAPIID property for an attribute.
But, the article does not tell you what to do if the object does not have a mAPIID property. I have a client that has done extensive attribute customization to their Active Directory and they wanted to have an additional property page show up on the User details template with their attributes.
The mAPIID property must be edited with the ADSIEDIT console, not the Active Directory Schema console.
But if you pick an attribute that you have extended in to the Active Directory and try to give it a mAPIID, you may get an error telling you: "The attribute cannot be modified because it is owned by the system."
I had to spend some time on the phone with both Exchange and Active Directory PSS engineers, but we finally figured out how to modify the mAPII propery of new attributes added to the Active Directory. This requires the use of LDP.EXE in addition to ADSIEDIT.MSC.
- Login as a member of Schema Admins (preferably on the Schema Master FSMO)
- Launch LDP.EXE
- Connect to the Schema Master FSMO using LDP.EXE
- Bind to the Schema Master using an account with Schema Admin permissions.
- From the Browse menu, choose Modify
- In the Modify dialog box, leave the DN field blank, and type schemaUpgradeInProgress in the Attribute field. In the Value field, enter the number 1. Click the Enter button, then click the Run button.
- Close the Modify dialog box.
- Launch ADSIEDIT.MSC and modify the mAPIID values for the necessary attributes. (You may need to wait for the Active Directory to replicate.)
- Run LDP again, and change the value of schemaUpgradeInProgress from 1 to 0.
- From the Active Directory Schema console, right click on the console and choose "Reload the Schema"
I know you are probably saying, okay, I have got these new attributes I have extended, what value should I use for the mAPIID. I have been unable to find any (but I still have a few queries out about this), so I have just been using unique numbers above 50000 in hopes of avoiding a conflict with an existing attribute.
As always, take EXTREME care when modifying the schema. Many changes to the schema cannot be un-done!!!!