I wanted to list a few features that I feel would be extremely beneficial to be added to the platform. I have heard bits and pieces as to how the Summer 05 release will address some of these and how others are on the “roadmap”. We’ll see. The exciting thing is that when functionality is released, it does not require an upgrade. It’s just there and ready to go. That may not sound that exciting, but after having implemented products such as Siebel On-Premise for a long time, it is great to be able to take advantage of new functionality without the expense/headache of going through an entire project focused purely on upgrading. That is a HUGE advantage of Salesforce.com’s product.
Features I would like to see addressed soon:
Calculated Fields represent the ability to create a new field on an object whose definition is a formula rather than a piece of data stored in the database. I have heard that this functionality may be coming in the Summer 05 release. It has been described as “Excel-like” formulas can be added as a calculated field. This sounds exciting and should be able to fully support formulas that calculate across a record. For example:
OpportunityLineItem.Calc Field = SalesPrice / ListPrice
This would calculate the discount % on an Opportunity Line item.
Account.Calc Field = If (Annual Revenue > 1000000000, “Strategic Account”)
Uses IF, THEN logic to calculate a value based upon other values.
What is also needed is the ability to roll up values from child records. For example:
Account.Calc Field = If(Opportunity.Won = 1, Sum(Opportunity.Amount))
A calculated field on an Account displays the sum of all Opportunities that have been Won for that account. Today, this must be obtained through a report. Having a calculated field will allow the user to spend their time on the Account record rather than having to toggle between the Account and a report on it.
Personal Contact Groups
Ability for a user to create personal contact groups. For example, suppose a user wants to create a list of Contacts they want to invite to an event in Chicago, IL for the Auto industry. They should be able to create a Contact Group called “Auto Event in Chicago”. To populate that with Contacts, they should be able to run a report and, from the resultset, click a link that says “Add Contacts to Group …” where they can auto add that list to the Group. Additionally, functionality should exist on the Contact itself allowing them to easily add a contact to a Group.
From the Group itself, they should be able to easily edit whose in the group and who is not. Suppose, they want to remove a few of the people that came up in the auto industry report. They should be able view the group, check the contacts to be removed and remove them.
Campaign functionality could be used for this purpose. However, this would be more focused for a sales user. It should be simple and personal. In some applications, this type of functionality is called List Management. The issue with using Campaigns for this purpose is that Campaigns do not have sharing rules. You cannot have "Private" campaigns. Also, adding Contacts to campaigns requires a report –> Excel –> member import process. This is pretty cumbersome for the average sales person.
Dynamic Dashboards based upon the User
A dashboard has a property that identifies the user that it should run under. If you want to create a common dashboard used by Sales Reps, Sales Managers, etc., you need to create a common template and have them clone it for personal use so it can execute under their user name and make it so they only see their own data. Rather, Dashboards should be capable of being run based upon the user that is looking at it. This is how Reports work today. I imagine it was not done this way for performance reasons, but the current design makes Dashboards limiting.
Ability to add a discount % on an Opportunity Line Item and having the Sales Price auto calculated.
Record Type Tabs
It would be so very cool if new tabs could use existing objects, but be based upon a specific record type. For example, suppose you wanted to have a Competitors tab, but leverage functionality in the Accounts module. Rather than having to use a custom object, it’d be very cool if you could create a record type called “Competitor” under Accounts and assign the use of that Record Type to a new tab. The result being that they would NOT appear under the main accounts tab and would only appear in their own tab.
Lookup Custom Fields
The ability to add a field to an object that is a lookup to another object. For example, add a new “Billing Account” field on an Opportunity that would reside on the main Opportunity section of the layout resulting in another 1:M relationship from Accounts to Oppotunities. The only way to do this now is through a custom object. However, the custom object would be a M:M relationship, not a 1:M.
Ability to filter a picklist based upon certain criteria. For example, ability to filter the Partner picklist on an Opportunity to only filter by Accounts that are of the type “Partner”. This type of functionality would result in better data quality.
Configurable Related Lists
Ability to modify the standard related lists to exclude inapplicable fields and to include custom, applicable ones. I hear this one may be coming soon.
There are a lot more that come to mind, but I will save those for another day. I would be very interested in anyone providing their knowledge about any of these coming in the upcoming release.