New features – OroCRM
In this release of OroCRM we have focused on improvements to Sales pipeline in its entirety from Lead to Opportunity management. We have also significantly upgraded Role management capabilities and UX and added numerous improvements to almost every feature of OroCRM. Due to advancements in Oro Platform, application performance has also improved significantly.
Sales pipeline management
B2B Channel type and B2B Customer were renamed to Sales Channel and Business Customer respectively to give the end user more clarity about their purpose.
Direct sales pipeline management without Sales Process entity
To streamline sales management UX we have deprecated Sales Processes and removed from the default Sales channel setup.
Instead, the Sales representative can now manage Leads and Opportunities directly, from their respective view pages, or even from entity grids via inline editing. Both entities’ statuses are available for direct manipulations (see below), although in case of Opportunity some statuses might be restricted by a workflow.
Migration note: Sales Processes are removed from the default setup only in fresh 1.10 installs of OroCRM. If you upgrade from 1.9.x version they will remain active and none of your data will change until you explicitly decide to turn them off. To do so, simply remove the Sales Process entity from your Sales channel setup. Then activate the Opportunity Management flow if you want to use it, or leave it inactive if you prefer the full freedom option (more on this below).
Note that even if you decide to stick with Sales Processes, all UX improvements for Lead and Opportunity management will be available. However, we strongly recommend to move away from them, as they will be completely discontinued and eliminated in future versions of OroCRM.
Lead management improvements
Open Leads as a default grid view
We’ve created a new Open Leads grid view and have made it default for Leads grid. The reason for this change was to focus the Sales rep on leads that require processing instead of already processed leads. All Leads view remains available out of the box.
Quickly create Lead in a single form
This feature allows the Sales rep to quickly create a Lead with any bit of information they have at their disposal. First name and Last name are no longer required, and Lead name remains the only mandatory field—this applies to both manual lead creation and to CSV import.
Lead creation and edit forms were also redesigned to better structure lead information.
Multiple emails, phones, and addresses for a Lead
Now Leads can be created with multiple email addresses, phone numbers, and postal addresses similarly to Contacts, giving Sales representatives more versatility and flexibility in lead management.
Manage Lead status directly
As stated above, Lead status can now be edited and changed by the user, allowing them to quickly mark a Lead as qualified or disqualified.
The administrator can adjust the list of statuses and their order in Entity configuration. Note that three default statuses cannot be removed, but can be renamed.
Disqualify Lead action
To speed up the lead management we’ve added Disqualify action to the lead view page. This action changes the Lead status without additional dialogs, saving the Sales rep a few clicks.
Convert Lead to Opportunity action
This is a new action that allows the Sales rep to quickly create an Opportunity and, if necessary, an Account and/or Contact along the way. All records are created within a single form that is pre-filled with the Lead data:
- Opportunity name is taken form the Lead name.
- An Account name is taken from Company name. The system will search for matching Account or Business customer, and will create new if the search was unsuccessful.
- Contact field will be pre-filled if the Lead is related to a Contact. Otherwise, the new Contact will be created along with the Opportunity, and instead of Contact selector, the form will contain a “New Contact Information” sub-form, so the Sales rep may review the new contact data and adjust it if necessary. All contact information will be taken from corresponding Lead fields.
Continue with Lead activities at the Opportunity page
To ensure that no conversation context and history is lost after you qualify a Lead to Opportunity, all activities recorded towards the Lead are also associated with the Opportunity created from it. The old activities remain associated with the Lead as well, but all new activities recorded towards the Opportunity after it has been created won’t appear on the Lead view.
Quickly create Opportunity in a single form with no popups
We have improved Create Opportunity form so it can be filled in quicker and in more convenient way, saving up a great deal of Sales rep’s time.
To do so, we’ve allowed to create a related Contact and an Account and Business Customer pair by simply typing in their desired names into respective controls. A list of matching values will still appear, but with an option to create a new record. Note that Account field represents a combined relation to an Account via Business Customer, so both records will be created at once. Matching values will also be searched for across both entities. (If Business Customer name is different from Account name, it will be displayed in parentheses.)
Note that the new controls still allow you to create a related customer or contact record in a popup via
+ button if you want to enter all their data—typing in the name is not mandatory, but rather a quick and convenient option.
The form was also redesigned to better structure and present Opportunity information
- All text fields—Customer need, Proposed solution, and Additional comments—were converted to rich text.
- Close date was renamed Expected Close Date so it can be used for revenue forecasting.
Manage Opportunity status directly and tie it to Probability
As with Leads, Opportunity status is also available for direct manipulations on Edit forms and in grids. However, to further improve Sales rep user experience, we also added the ability to connect it to Probability field, so that it will change accordingly to a predetermined default value. This is the default list of statuses and their related probabilities:
|Identification & Alignment||10%|
The probability will change along with the status in create and edit forms, workflow transition forms, and even when the status is changed inline in the grid. The user will still be able to manually change the probability if they want to, but please note that in this case the default values will no longer be applied after status change. If a certain status has no default probability value, the probability will remain unchanged after this status is applied.
System administrator can change the list of statuses and their related probabilities in CRM > Sales Pipeline > Opportunity section of System and Organization configuration. (The list of statuses can only be managed at the system level.) Please note that three statuses—Open, Closed Won, and Closed Lost—cannot be removed, although they can be renamed; assigned probabilities for Closed Won and Closed Lost statuses are also fixed.
Two options for Opportunity management: workflow or full freedom
We want to provide our users with as much flexibility in opportunity management as possible, and to achieve that in 1.10 release we have supplied two options.
Full freedom option is turned on by default. In this case, all Opportunity fields are exposed for editing, so Sales reps may mark an opportunity closed as won by simply editing its status in the grid. This option allows the most flexibility and convenience in data modification. However, this also means data integrity is not enforced, and the Sales rep bears full responsibility of avoiding mistakes such as open opportunity with the close reason and close revenue. We recommend this option to smaller businesses that don’t have a lot of opportunities or a lot of sales representatives, as in this case advantages of added convenience will overweight the possible mistakes in the data.
Workflow can be turned on by the administrator. Our default workflow (“Opportunity Management Flow”) consists of three steps: Open, Won, and Lost. When the workflow is active, it applies restrictions to opportunity edits; however, these restrictions are less severe than ones imposed by the Sales Process workflow, when Opportunity couldn’t be edited at all. The restrictions are as follows:
- In Open step neither Closed Won nor Closed Lost statuses can be selected. Close reason and Close revenue fields are also blocked. This applies to both Create and Edit forms.
- In Won and Lost steps Account, Status, Probability, Budget amount, and Expected Close Date are also blocked in addition to Close Revenue and Close Reason.
The workflow option is designed to maintain a certain degree of flexibility in opportunity management while also ensuring the integrity of sales data. We recommend this option for larger organizations with big amount of opportunities in the pipeline in which case data consistency is more of an issue.
Please note, that when you enable a workflow over existing opportunities, you will have to start it for every record manually via special Start workflow transition. This only makes practical sense for open opportunities.
More out-of-the-box grid views for Opportunity
Similarly to Lead management, we’ve added a bunch of new grid views and changed the default to Open Opportunities. The rationale of this change was the same: to focus Sales reps on the work to be done instead of already completed work. Here are views we’ve added:
- Open Opportunities (new default) – opportunities that are neither lost nor won.
- Overdue Opportunities – opportunities that have expected close date in the past but still remain open
- Recently Closed Opportunities – opportunities that were won in the last 30 days
Kanban Board for Opportunities
Kanban Board is a special data view for Opportunities that allows Sales reps to move an opportunity through the pipeline by simply dragging its card between status columns.
Kanban Board appears as a set of columns that match Opportunity statuses. Every Opportunity record is represented by a card that contains its name, budget, probability, related Account, owner, and created at date. Opportunity name is clickable and leads to the view page; and the top right corner of a card contains the three-dot action control where other record actions such as Edit and Delete can be found.
The board can be filtered and sorted by any field except for the status. Only the top 5 cards are displayed in every column by default; more (again, up to 5 cards in each column) will be loaded when you scroll the board down. The number of loaded cards and the total number of cards is displayed on top of the board.
Kanban Board is available only when Opportunity entity has no active workflow (the “full freedom” option). In this case, a switch between grid and board views will appear next to grid controls. When you switch between grid and board views all filters and sorting remain applied. The board view can be saved in the same way the grid view is saved; view type will be shown as an icon next to the its name in the list of data views.
We’ve developed Kanban Board as the universal data view that can be applied to any entity, but for start have turned it on only for Opportunities. More will follow in the future releases!
Sales dashboard improvements
Search for widgets in Add Widget dialog
To ease the task of looking for the necessary dashboard widgets in the ever-growing list we’ve added instant search to the Add Widget dialog. Simply start typing the name of the widget you’re looking for and the widget list will be filtered to match your entry.
We’re also highlighting the widgets you already have on the dashboard.
Filter widget data by owner
We redesigned and standardized the ownership filter and expanded it to most out-of-the box widgets. The control now allows to filter data in widget by individual owners, whole teams (business units), or entire user roles.
Another great addition is the ability to filter by the current user or their team—this option allows the administrator to set up a single team dashboard where every user will see their own data.
Filter widget data by date range
We’ve also redesigned and standardized the date range filter in widgets. It now allows you to simply choose a convenient reporting period, such as “today,” “this week,” or “this quarter,” choose if you want to compare to the previous period, and be done with it! The option for a custom range also remains available in the list.
Filter widget data by pipeline
This filter makes widget configuration as versatile as our segmentation—indeed, we’ve built our entire filtering tool into widget config! Click on Advanced Filter to expand it, and then drag and drop the filtering query of any complexity. Filter opportunities by naming convention or by budget size; apply filters to the number of contact attempts, or to the state of residency of the related contact—whatever are borders of your sales pipeline, you now can filter it out and follow it in the widget!
Please note that this filter is available in the Forecast widget only. We will expand it to other widgets in the future releases.
Opportunities by status widget improvements
To match the grown number of opportunity statuses and to make it capable of handling many more we’ve decided to make bars in this widget horizontal. In addition to that, we’ve made possible to exclude unnecessary statuses from the chart, and to display data in either total budget of opportunities, or their count.
Opportunities by lead source widget improvements
Similarly to the previous widget, the list of lead sources being displayed in this widget can now be truncated—however, they’re not hidden entirely but combined under Other pie slice, so the percentage remains correct (you should always have the whole pie!). Opportunities with no leads, or with no lead source are also accounted for. And this widget can also be configured to display data calculated from total count of opportunities or from their combined budgets.
Leads list and Opportunities list widgets
These are two simple widgets that display a list of lead or opportunity records for quick access. By default both display only open items that are owned by the current user, but can be configured to display any necessary data.
Personal application configuration
A long-requested feature by our community and customers alike is finally available in OroCRM! Now every user will be able to custom-tailor the application to their own taste by overriding system and organization configuration in the following areas:
- Applicaiton language
- Various display settings, such as menu bar location or the number of rows in a grid page
- Email configuration
Please note that parts of email configuration—mailbox setup and personal signature—were moved from Edit User page.
User configuration page can be accessed via button on the user view page or via My Configuration item in the My User menu.
Role management and ACL
Field-level ACL is the biggest improvement to our ACL engine to date. It works exactly like you expect, allowing the administrator to control user access (Create, View, Edit) to certain entity fields.
With this feature administrators will be able to configure access to Opportunities in such a way so that sales representatives will be able to see their co-workers’ opportunities without the budget, status, or probability fields. Such limitation of access both helps to protect sensitive data and increase sense of competition.
To manage ACL on the field level the administrator has to turn it on in the respective entity configuration first. Within this release field-level ACL will be available out of the box for Account and Opportunity entities only, but we will add support for more entities in the future.
We would like to thank our community member Ivan Shakuta (@ishakuta) who had contributed significantly to the development of this feature.
Role view page has been added to the system to give both administrators and non-administrators a way to read capabilities of a certain role without having to edit it (and risking making undesired changes).
Clone option for roles will save OroCRM administrators a great deal of time and effort when they need to create a new role—instead of starting from a clean slate they would be able to reuse an existing role and only make the necessary adjustments.
New role management UX
As the number of entities and system capabilities in OroCRM grows, so does the Role management page. To reduce the effort required for role management and maintenance we have developed a new UX for the Edit Role page.
The most noticeable improvement in the new UX is the functional separation of entities and capabilities. Four main domains—Account management, Sales, Marketing, and System capabilities create clear structure for all ACL items and helps the administrator to check if permissions for a certain role indeed match functions of its user.
The new UX is also scalable for unlimited number of actions that are introduced with this release on the platform level. Access level for every entity action can now be configured within a single row. All action permissions for a single entity can be set to the same value with a single “mass” action, allowign the administrator to save time, especially in situations where access has to be disabled completely.
Other features and improvements
General user experience
Save and New option
This Save button option will come in handy when you want to create multiple records in succession—it will save you a lot of time by eliminating the need to go back and forth between grid and record views.
Range filters for numbers
All numeric values can now be filtered by a range query, i.e.
between X and Y or
not between X and Y. All other filter options are now spelled out in plain words instead of mathematical operators for better legibility.
Export grids to Excel
Contents of an entity grid can now be exported to Excel file (
.xlsx) in addition to standard CSV export. Please note that it applies to Export Grid functionality only, not the generic entity export.
We want to thank our community member Sufijen Bani (@sbani) who had contributed the PR for this feature.
Enter call duration as text
While not directly related to Sales rep experience, this feature nevertheless will save a lot of time and effort for anyone whose job requires making and logging a lot of calls. Call duration can now be typed in in a human-friendly format, such as
1h 2m or
12m 45s. Fractions are also permitted, e.g.
1.5m will be correctly processed as 1 minute 30 seconds.
Preview attached images
You can now preview images attached to either entity records or emails directly in the application, eliminating the need to download them first. Click on the image to open a gallery where you can view all images attached to this particular entity record or email thread. The gallery also allows you to zoom the image in or out, download the image, or print it.
Manage task status without a workflow
In the same way we allow to manage Lead and Opportunity status directly, we’ve exposed Task status for direct manipulations in case the workflow is turned off, giving you the “full freedom” task management option if you prefer it.
Record pagination for emails
Email threads accessed from My Emails page will now have pagination controls for quick navigation between threads, similarly to other entities.
My Calendar can now display recurring events. Although they cannot be managed from the UI just yet, they will be properly rendered when synced with an external source, such as Outlook.
Calendar events can now display guests that are not OroCRM users. Although such guests cannot be managed from the UI just yet, they will be properly rendered when synced with an external source, such as Outlook.
- Week is now the default view for My Calendar
- The system remembers the user’s choice of My Calendar view and applies it the next time
- Time selectors are no longer shown for all-day events
Create contacts with any piece of information
Similarly to changes in Lead requirements, we’ve eased the list of mandatory Contact fields. Now a Contact can be created with just one of the following fields:
- First name
- Last name
Similarly to Accounts, you can now merge up to 5 contacts into a single record. The user interface is the same: select the desired contacts in the grid with checkboxes, then click Merge button in the list of mass actions, and finally specify the master record and choose output values or merge strategy for every attribute.
Activate or deactivate Magento integration
In addition to full deactivation of Magento channel that hides its data from UI completely, we now allow to deactivate only the integration—in this case the data will remain accessible (e.g. as an archive) but will no longer be synced with the Magento store. When the integration is re-activated, the data is fully re-synced according to the sync strategy.
Customer tracking data on Account view
If Magento web tracking is turned on, you will now find a handy tracking data widget on both Magento Customer and Account views. The widget displays a timeline of recorded events (page visits, items added to cart, and checkouts entered) and a list of metrics such as total site visits, days since the last visit, most viewed page, and so on.
Abandoned revenue widget for eCommerce dashboard
This is a new widget for eCommerce dashboard that displays
- Abandoned revenue—the total amount of all open carts, so you can estimate the potential outcome of an abandoned cart conversion campaign
- The number of open carts
- Abandon rate—the percent of all shopping carts that convert to orders. This metric gives you the understanding of your checkout process efficiency or the results of your cart conversion efforts.
- Line chart that shows progression of abandoned revenue over time.
New features – Platform
The most significant change in Oro Platform 1.10 is the new web API. We have developed very powerful Action concept. And finally, we kept pace with the new developments by adding support of PHP 7 and Symfony 2.8.
New web API
In course of 1.10 release we have developed a completely new automated Oro Platform API that is based on entity metadata. This means that after you create an entity, all of its fields and relations become immediately available via API—so you can get their contents, create new records, and update and delete existing records immediately.
The new API is based on JSON API specifications. It supports all standard HTTP methods for a RESTful service:
DELETE methods support massive operations with options for filtering and sorting the set of records.
GET also supports field configuration, so you can limit the request with the specific set of fields. API methods for sub-relations are supported too. This means that you are able to manipulate the exact record(s) from the collection of related entities—e.g. only the specific contact of an account.
Documentation for all API methods is (mostly) automatically generated. It can be accessed via the sandbox at
The new API is disabled by default for backwards compatibility reasons. You have to enable it explicitly for every new entity.
The old API is deprecated, but will still be available for at least the next two release cycles to give you the time to transition to the new API. We recommend doing it as soon as possible, as none of the new features support the old API.
Actions are configurable sets of operations to be executed by the system. Every action is a combination of three components:
- A trigger—an event that determines what starts an action. Triggers can be UI buttons, entity-related events, or time-related events.
- A data selection query that determines a dataset to which action will be applied.
- A function that in turn is a combination of elementary operations with system entities. Functions may also include conditions, call another functions, and ask the user to supply necessary data via forms.
The definition of an Action is very similar to workflow transition, and indeed they have the same roots. However, Actions are more powerful and versatile—they can be launched and executed not only by the user, but also automatically by the system. The most significant advantage of Actions over custom “buttons” is that the entire Action definition is stored in the
.yml config file and requires no PHP code. This means that in the future Actions can be fully configured from the UI.
So far, Actions exist only by themselves and can be utilized to perform “individual” tasks. Available Action examples in Oro applications are conversion of Lead to Opportunity in OroCRM (the UI-triggered action), or auto-expiration of a Quote in OroCommerce (the time-triggered action). In the future, however, we plan to allow to reuse Actions as workflow transitions, thus giving them even more versatility.
PHP 7 compatibility, PHP 5.4 discontinued
Since the release of PHP 7 numerous application tests indicated that upgrade to this version not only helps streamline application development but also brings in significant performance gains in page response times and memory consumption. This release opens these benefits to the entire Oro Community by introducing compatibility of Oro Platform with PHP 7.
To make it possible to write code that is portable between PHP 5 and PHP 7 we’ve added new
symfony/polyfill-php70 dependency. We also decided to discontinue support for the older PHP 5.4 version. The 5.4 version will remain supported in older versions (1.9.x and below) during their current life cycle, but is not supported from this release onwards.
Symfony 2.8 support
In this release we have also upgraded the Oro Platform to support the LTS version of Symfony – 2.8.
We continue our effort to unbundle our Oro applicatins and introduce various functional bundles as part of the platform. In this release, both
CallsBundle were moved to separate packages that are now available on their own.
CLI notifications for users
System administrator can now send notifications to all application users via command line interface or from the UI. This feature is useful for notifications about planned shutdown for maintenance or other system-wide announcements.