Enterprise Software Design Blog

Archive for the ‘CRM’ Category

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: The end users should be able to manage attributes with in a business objects. They should be able to add a new attribute of any data type and define rules for it.
  • UI Extensibility: The end users should be able to add new attribute to the UI forms as a field and the data can be added/modified using these fields. The field can be either simple editable text, number (such as amount, percentage), lookup or even media object (such as image, video) etc.,
  • Security Privileges: The design should take in to account that can extend a business object and once extended who can view and manage these extended attribute.

Data Model Extensibility

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

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).

Security Privileges

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.

  • Organization Hierarchy: The field can be made visible to the any of the organization hierarchy defined such as sales org, marketing organization etc.,
  • Employee Hierarchy: The field can be made visible to the any of the employee hierarchy defined. The administrator will choose a sales VP and all employees reporting under sales VP will see the fields.
  • All Users: The field can be made visible to all the uses with in a enterprise.

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.

Multinational companies generally have operations in multiple countries and they have requirement to run transactions with multiple currencies. They need to be able to see the amounts used in transaction (Budgets, sales revenue, sales targets etc.,) in multiple currencies with current and historical exchange rates.

For example, consider a multinational company with head quarters in US having operations in Japan and Europe. The company’s sales budget is determined in centrally in US for all their subsidiaries all over the world. The CEO, based in US will allocate the budget in US dollars to these subsidiaries and the head of Europe and Japan review the sales budgets. The head of Europe and Japan are in their respective countries and will review the sales budget in EURO and Japanese Yen. On the surface, this isn’t a major issue since the software will convert the US dollar to Euro and Yen using current exchange rate. If you scratch the surface you’ll see that currency exchange rate is not constant and it fluctuates almost daily and sometimes it has wild swings. The sales head for Europe cannot be shown different sales budget every day due to currency fluctuations. Conversely there are situations where the CEO needs to see an amount always with current exchange rate. Typically while a transaction is in progress, in this case while the CEO is still planning to allocate the budget, he may want to see the EURO equivalent of the sales budget before publishing to the respective subsidiaries.

This is typical application design issues and the enterprise applications will have following terminologies introduced to address these issue.

  • User Preferred Currency: This currency will be associated with every user of the software and it will generally depend on user’s native location. In the example above, CEO will have US dollars as user preferred currency and head of sales for Europe will have EURO as the user preferred currency. The application will always default all amount in user preferred currency.
  • Current Exchange Rate: This is the exchange rate for any currency as of today’s date. This information will be available either thru financial institutions (thru Web Services) or application can set default exchange rate within their schema.
  • Transaction Exchange Rate: This is the current exchange rate of a day when transaction was completed. The transaction completed date and current exchange rate on that day for all currencies supported will be stored in a transaction exchange rate table in schema. In the example above, when the CEO publishes the sales budget, the date when the sales budget was published and the current exchange rate of all the currencies will be stored in a table as given below



Exchange Rate







Multi currency design is explained in the process given below.

  • The CEO logs in to the system to allocate sales budgets.
  • The CEO will see the sales budget in user preferred currency by default, as shown. The CEO will be able to change the currency to other supported currencies and see the amount.

  • Once the CEO completes a the transaction by publishing the budget, the amount will be stored in user preferred currency along with transaction date and exchange rate as show below in the transaction schema.



Transaction Date




  • The Europe sales VP will login to the application to view the budget.
  • The application will identify the user preferred currency (i.e. EURO), currency code and transaction date of the sales budget from the transaction schema.
  • It will look up the transaction exchange rate table to find out the transaction exchange rate for USD on the transaction date.
  • If available, it will apply the transaction exchange rate to the sales budget and will display it to the user as shown below.

Data visualization is the study of visually representing data for the purpose of effective communication of data through visual means. Data visualization will improve the aesthetics (you no longer have to see the boring tables and standard widgets) and improve the intuitiveness of the data being resented. Data visualization is a effective tool to present the information to the user in a way it maps the representation they have in their mind.

Apart from BI and analytics where there is a need to represent data as charts, enterprise software designers overlooked the need for visually representing data in transactional pages. This is predominantly due to technical limitation with web browsers and the technology used to develop the UI layer. With the proliferation of Rich Internet Application (RIA) frameworks (Adobe Flex, JaveFX etc), representing data on web browsers is feasible and gives an opportunity for the software designers to take a re-look at their data representation philosophies.

Data visualization and RIA presents enterprise software designers with an opportunity to represent the regular enterprise transactional data as graphics. When designed correctly, it automatically enhances the user experience and usability of the application. Enterprise data models are inherently complex structures with complicated relationships among them. These data models represent enterprise objects and their relationship with each others. The users of the enterprise software generally have a mental model of these data. After all they work and interact with these objects in their day-to-day work life and use the enterprise software to effectively communicate a job. Successful data visualization should map the mental model and represent the mind map on the screen. This immediately creates a trust between the software and user and makes the user interaction simpler and effective.

Let’s take an example of sales manager of a high tech company selling laptops and desktop computers to large companies. He will have a team of sales representatives reporting in to him. He will have a typical mental model about the customers, sales reps engaging with these customers, the sales targets and current status. He knows the relationships these have among each other and he can visually imagine this in his mind. These objects such as customer, sales reps, products, targets and status are available in the enterprise data model as data in rows and column. The data by itself is complex and its representations as rows and column is difficult to comprehend and doesn’t match the mental model the user has.

The mental model of a sales manager looks like this.

With data visualization using rich internet applications, this mental model can be captured in the design below. With a click of a button (on the sales representative node), the sales manager can view the open pipeline for the customer. The design exactly maps the image that sales manager has in his mind and don’t have to wade through the maze of HTML table to find out the information.


Predictive analytics is the latest buzzword in the enterprise software industry and it you go by predictions from industry watchers, every vendor will offer predictive analytics solutions. With most enterprise vendors acquiring predictive analysis technologies (i.e. Oracle acquired Hyperion, SAP acquired business objects and IBM acquired SPSS) we would definitely see some predictive analytics solution coming out from these companies. The customers are more than happy to give predictive analysis a try and why not in this economic malaise, if somebody is offering a sneak peek in to what’s in store in future, then why not.

Predictive Analytics

Predictive analytics is a technique by which the current and historical data are analyzed either thru sophisticated data mining tools or (and) applying statistical techniques to predict a future event. The future event could be predicting future sales, employee performance, budget requirements etc. The output could be either a detailed report (i.e. table, chart) or it could just be a single number. Predictive analytics is different from the traditional BI analytics in that predictive analytics looks at the present and historical data and predicts a future event where as tradition BI analytics looks same date and provides insights in to these data such sales by products, sales by territories etc.,

Traditionally application vendors provided predictive analytics tool as separate software that needs to be integrated with the existing database systems. Some tools will read the data directly from OLTP and data warehouse sources where as some other will define its own multi-dimension database (or cube) to load data in to it. These tools are capable for implementing sophisticated statistical techniques such as linear regression, time series forecasting, prediction model etc. The end users of these tools should be well versed with the business data, data warehouse concepts and statistical algorithms to effectively use these tools.

Pain Points

Though predictive analysis software offers real business benefit to enterprises, it is only used by very few with the enterprise. This is due the fact that majority of the enterprise users such sales managers, HR managers are not statistics expert and usually they don’t have enough bandwidth to engage statisticians and dive in to the maze of enterprise data. Senior executives such as the C’ level executives and VPs use these with the help of these experts. They basically use these to make important business decision such as budget allocation, high level territory performance and forecast etc. Most often these tools are not used regular day-to-day users.

To bring the benefits of predictive analysis to the end users, I suggest the following.

  1. Embed predictive analytics in to transaction pages
  2. Helps complete a business process
  3. Avoid technical and statistical terms in UI as much as possible.
  4. Do not over engineer

Design Solution

The example given below predicts the future sales of a particular product. It looks at the historical data ( i.e. from Jan – Sep ) and predicts the sales for the next quarter. This analytics will be used by a sales manager to view the sales target and the predicted sales through out a calendar year.The sales manager will use this tool to better plan and align the sales resources.

Month       Sales               No of sales rep
Jan             $100,000                 1
Feb            $120,000                  3
Mar            $123,000                  3
Apr            $110,000                  2
May           $112,000                  2
Jun             $119,000                 3
Jul             $115,000                   4
Aug           $110,000                  2
Sep             $100,000                2

Product Category         Customer Category        Sales
Desktop                                 2M-3M                                        $112,000
Desktop                                 3M-5M                                        $140,000
Printer                                   2M-3M                                       $120,000
Printer                                   3M-5M                                       $150,000
Laptop                                   2M-3M                                       $122,000
Laptop                                   3M-5M                                       $115,000
Services                                2M-3M                                      $120,000
Services                                3M-5M                                       $130,000

Predict Future Sales

The application uses time linear time series regression model to compute the future sales. The predictive model uses the following dependent variable to predict the future sales.

  1. Potential Revenue in pipeline
  2. No. of sales rep reporting to sales manager
  3. Product category sold
  4. Customer size

The sales manager can either use the standard forecasting method or use any of the standard averaging technique to predict the quota. Though this is little too technical for a enterprise user, having different technique till help the manager look at the other model and minimize errors and risk and it will give him confidence in the prediction.
The predicted sales and the red bar in the chart will change as and when any change is made. The model uses the liner regression with any of the chosen method and uses the time series forecasting to predict the future sales for the coming months and quarters. The user can adjust the dependent variables view real-time how the sales will be for next quarter and he can continue to do it until the target value is reached. At the end of the prediction, the end user will know what should the pipeline revenue, how many sales rep, what products should be sold to what kind of customers will be known and the he can strategize the sales activities