My series of Cloud Application Studio Blogs
Customer has requirement that code list for field Function in Contact creation page should be restricted based on the role code in Account TI.
![](/legacyfs/online/storage/blog_attachments/2017/09/clipboard1-15.png)
Technically the control field above is modeled in this field as below: ( in BO BusinessPartner )
![](/legacyfs/online/storage/blog_attachments/2017/09/lip_image002.gif)
And the restricted field Function is in another BO: BusinessPartnerRelationship
![](/legacyfs/online/storage/blog_attachments/2017/09/lip_image002-1.gif)
In this case it is not possible to use the RoleCode field to control the Function field.
![](/legacyfs/online/storage/blog_attachments/2017/09/clipboard4-10.png)
Fortunately besides Business Field, it is supported to use an extension field to perform CLR( Code List Restriction ) as well.
Here below are detailed steps:
1. Create an extension field with indicator data type on Root node of BusinessPartnerRelationship:
![](/legacyfs/online/storage/blog_attachments/2017/09/clipboard5-9.png)
2. Create an AfterModify event implementation to manually copy the value of RoleCode from BusinessPartner BO to the indicator extension field:
![](/legacyfs/online/storage/blog_attachments/2017/09/clipboard2-9.png)
import ABSL;
import AP.FO.BusinessPartner.Global;
var bpID = this.ContactPerson.ToRoot.FirstBusinessPartner.InternalID;
var queryByID = Customer.QueryByIdentification;
var queryByIDParameter = queryByID.CreateSelectionParams();
queryByIDParameter.Add( queryByID.InternalID, "I", "EQ", bpID );
var result = queryByID.Execute(queryByIDParameter);
var first = result.GetFirst();
var common = first.Common.GetFirst();
var RoleCode = common.ToRoot.CustomerRole.RoleCode.content;
if( RoleCode == "BUP002" ){ // prospect
this.ZRoleIndicator = true;
}
else{
this.ZRoleIndicator = false;
}
3. Add this extension field to Quick Creation UI via Extensibility Explorer:
4. Now it is ready to create a code list restriction based on this indicator extension field: it is now available in Control Field drop down list:
Just define corresponding value for Prospect ( indicator equals to true ) and Customer ( indicator equals to false 😞
And it works in the runtime: in contact creation page, only a subset of specified entries in CLR maintenance UI is displayed.