Posted by: Amburkar Sankar Rao on: January 29, 2010
As discussed in my earlier post(Extensibility Design), an extensible design provides the ability to customize an enterprise application software to server business needs of different customers. Extensibility is critical to the application software vendor especially if the software is delivered through a SaaS or On-Demand model. The underlying application architecture should support a metadata based model, which will provide a framework to extend the out of the box application to suite different customers’ needs. The framework should provide a generalized mechanism to construct application components to build the software.
The generalized mechanism for extensibility will mainly provide following three features.
Data model extensibility is achieved through flexible attributes. Flexible attributes are generic attributes that is associated with a logical business objects. Flexible attributes are of generic data type (such as Raw) and can hold data of any type. The data will be stored as raw bytes and will be converted to appropriate data type on the business layer before transaction processing. An example of flexible attribute for CRM Opportunity object is given below.
UI Extensibility refers to the ability to add a field on runtime to a page. A ‘customize’ link will bring up the extensibility editor which will allow the users to create a new field in the form. The editor will prompt the user to enter the label and type. The types can either text, number of lookup. If lookup is chosen, then the editor will prompt the user to enter the lookup items. The user can also choose other properties such as required field and validation rules (not shown in wireframe below).
The visibility of extended attributes and fields will depend on the security privileges. The attributes in the data model will inherit the data security policy defined for the logical business object and the function security will depend on any of the following.
It should be noted that in a SaaS model, the customization will be visible only to those who extends the product. Subscribers’ from other customers will not be able to see these changes.