A question came up today on how to display different data for different types of employee profiles in Lotus Connections, the answer is to create different types of Profiles and assign users in to that Profile type. Before you begin make sure you have backed up your profiles-confg.xml, and follow the instructions for checking out the file before editing. Profile types are defined in the “profiles-config.xml file in the <layoutConfiguration> section, this is the start of the default profile: <layoutConfiguration> <profileLayout profileType=”default”> Profiles are made up of three sections: 1. Job Information This is the information which appears to the right of the photo in the header of a persons profile, this is typically Title, Department, and Physical Address by default Contact Information This is the remaining contact information which makes up the body of the profile Associated Information This is the About Me and Background sections of the profile. It is important to make your changes adding or removing fields from the sections which you want them to appear. It is also important to be aware of the different sections if you are extending profiles to include custom fields, but for now we will leave that for another day. Make a copy of the default profile section, you want to make sure you begin with <profileLayout profileType=”default”> and end with </profileLayout>, and simply copy the section right below the default profile. Next you want to set a profile type, say you want to have a profile type for retired employees you would change default to retired <profileLayout profileType=”retired”>. NOTE: Whatever you define as the Profile Type is what you will need to populate in to the profiles database later on, and it will be case sensitive so think simple. Now you can change the fields displayed by adding and removing fields, you can also change fields to make the editable or non-editable,. and have fields display only if they are populated. There are two elements that contain data in the profile layout, ‘attribute’, and ‘editableAttribute’. As the names imply an attribute is not editable ever by the end user, an editableAttribute can be set in the profile layout. Here are some examples of things you can do In this example we are displaying the orgnaization Title (i.e a persons job title), but setting showLabel=false we are suppressing the field label from the screen (true would enable) the appendHtml is used to end the line so that the next field appears on a new line. (appendHtml only applies in the Job Information section of the Profile. <attribute showLabel=”false” appendHtml=”<br/>”>organizationTitle</attribute> In this example we are displaying a phone number, displaying the field label, and preventing editing of the field. <editableAttribute disabled=”true” showLabel=”true”>telephoneNumber</editableAttribute> To enable editing you can either set disabled to false, or simply remove the section all together like this <editableAttribute showLabel=”true”>telephoneNumber</editableAttribute> Once you have the fields configured you can also alter the appearance of the Profile itself, but defining a new page layout, also in the profiles-config.xml.look for the <layout profileType=default> to find the default layout shown here. NOTE: This step is only required to change the layout for different profile types if they will all use the same layout you can simply leave the default. <layout profileType=”default”> <page pageId=”profilesView”> <widgetInstance uiLocation=”col3″ defIdRef=”reportStructure”/> <widgetInstance uiLocation=”col3″ defIdRef=”friends”/> <widgetInstance uiLocation=”col3″ defIdRef=”linkRoll”/> <widgetInstance uiLocation=”col1″ defIdRef=”socialTags”/> <widgetInstance uiLocation=”col2″ defIdRef=”multiFeedReader”/> </page> <page pageId=”reportingStructureView”> </page> <page pageId=”editProfileView”/> <page pageId=”searchResultView”/> <page pageId=”fullPageWidgetView”/> </layout> Going back to our example of a retiree, it might make sense to remove the Reporting Structure from a retirees profile, which can be done by removing the widget, so it looked like this> <layout profileType=”default”> <page pageId=”retired”> <widgetInstance uiLocation=”col3″ defIdRef=”friends”/> <widgetInstance uiLocation=”col3″ defIdRef=”linkRoll”/> <widgetInstance uiLocation=”col1″ defIdRef=”socialTags”/>
<widgetInstance uiLocation=”col2″ defIdRef=”multiFeedReader”/> </page> <page pageId=”reportingStructureView”> </page> <page pageId=”editProfileView”/> <page pageId=”searchResultView”/> <page pageId=”fullPageWidgetView”/> </layout> Once this is done and you have saved and checked in your changes, you need to restart Profiles for them to take effect. The final piece of the puzzle is applying a Profile type to an employee. This is done by populating the prof_type filed in the employee table in the database. NOTE: If the prof_type field is blank, the employee will us the default profile. You can use TDI to populate this field, but you will have to determine how you are identifying the employees that should be placed in different types, it can be an attribute in LDAP, or data coming from am HR system or another source. Lotus Connections Info Center Adding Profile Types
Tnx for this post! I knew this stuff was possible, but I couldn’t figure out how te map the profile type to an employee. I thought these were mapped to LDAP groups, but they are mapped to the prof_type field. Again, great post
Awesome post!!! Thanks for sharing this!
Great post, thank you so much Mitch. Really appreciated.
Tnx for this post! I knew this stuff was possible, but I couldn’t figure out how te map the profile type to an employee. I thought these were mapped to LDAP groups, but they are mapped to the prof_type field.
Again, great post
Thanks Mitch! After reading your post it seems that all is clear and simple.
One question – how does i can determine that person is retired when this person exist only in our NAB deny access group?
As i know Domino LDAP didn’t provide any information about group membership…
Is there any solution for using deny access group without modification of person records?
In my opinion the best way is to write small agent to populate special field in person records according deny access group membership.