New Oro namespace
We have regrouped all OroPlatform bundles into new Oro namespace to reduce possibility of BC break in case when platform features will be used by different applications.
Oro configuration files
In order to improve development experience we have also relocated and restructured all Oro configuration files, and provided the set of rules for naming of config files and folders.
CalendarBundle has been moved to a separate package.
Workflow engine capabilities
In addition to user-oriented features, we have also added a few more technical capabilities to workflow engine, allowing developers to create more flexible and capable workflows.
Run workflow transitions from data views
If necessary, workflow transitions can be included into row or card actions, allowing you to run them straight from the data view without having to open the record first.
Run workflow transitions from unrelated entities
The workflow transition button can now appear anywhere in the system, not just on the view of a record of an entity tied to the workflow.
Event and time triggers for workflow transitions
Similarly to Actions, workflow transitions can now be executed at a given time of the day, or after a certain delay after an event trigger.
Pre-actions for workflow transitions
Similarly to Operation definition, the workflow transition definition can now include a set of pre-actions that will prepare data before transition execution.
Disable or override operations by workflow
This feature allows workflow developer to override standard CRUD operations with workflow transitions, or simply hide them from the user if the workflow is active.
Full list of actions & conditions for easier debug
Console commands such as
debug:router can now provide a list of all actions & conditions with their comprehensive description: purpose, arguments (required/optional), additional information, etc.
In order to keep up with the growing demands for multiple jobs being executed in parallel, we decided to switch our job queue engine from JMS JobQueue to Rabbit MessageQueue. This engine allows far better scalability and improves performance of job execution & parallelization, allowing Oro applications to run smoothly even with the heavy background load.
All existing jobs in both OroPlatform and OroCRM have been moved to MessageQueue already.
Developers can now define features—a set of entities, menu items, workflows, actions, dashboard widgets and other objects that share the common functional purpose. Features can then be toggled on and off by system administrators, greatly simplifying and improving the experience of application configuration.
Features can be nested, and also can be dependent on each other.
We continue to develop and expand capabilities of our new Web API introduced in the previous release.
Manipulate extended associations via API
Extended associations, or activity contexts, can now be managed via API. You can add records to context of an email or calendar event; get the list of contexts of a recorded call; or strip a task from all its contexts.
This works for both many-to-one and many-to-many associations.
Create related records along with the primary record
POST method can now create records related to the entity record that is actually being POSTed. It is useful when a relation is mandatory, but the necessary record doesn’t exist yet—such as when you want to create a new Opportunity with a new Account. It is also useful if you want to add entity attributes that are stored as related entities, such as create a Contact record with multiple addresses in a single API call.
Phones and emails are treated as attributes instead of relations
Emails and phones will be exposed in API as entity attributes (which they effectively are) instead of relations. This should simplify most API references to them and make the calls clearer.
Autogenerated API documentation
You will now receive full documentation on REST and SOAP API resources for all Oro applications so you will be able to discover available integration points and their parameters.
Other features and improvements
Application cache clear and warmup performance
We greatly improved performance of
cache:clear command and application cache warmup, so it now takes seconds in most of the cases.
Search index query can return indexed data
Indexed data is now returned from search engine in addition to
SearchBundle/Query/Result/Item objects, so you don’t need to perform additional DB request to retrieve it.
Caching of built layouts
Layouts that are already built are cached to increase performance. The cache key depends on the layout context and the last modification date of all layout update files.
Recursive import of YML configuration files
YML config files can now be imported using the standard Symfony notation for imports in yaml. An imported file can recursively trigger import of another file, which also enables import of a single config within multiple files.
Advanced application security
Password strength configuration
This feature allows administrators to impose mandatory complexity demands to users’ passwords. It is possible to configure the following restrictions:
- Minimum length (8 characters by default)
- Require password to contain a number
- Require a lowercase letter
- Require an uppercase letter
- Require a special character
As part of this feature we’ve introduced two sets of user statuses to better reflect the current state of the user’s account.
Status for state of the user account. This is a system status that determines general validity of the user’s account and usually corresponds to state of user’s employment within an organization. It has two options: Enabled (used to be Active) and Disabled (formerly Inactive) and can be manipulated directly at User edit page or via Enable User/Disable User actions.
Authentication status provides information of the validity and applicability of user’s login credentials. In Community Edition it has two options: Active and Password reset, and in Enterprise Edition a third Locked option is added. This status cannot be manipulated directly and is changed as a result of administrator’s or user’s own actions, such as resetting the password or getting locked after unsuccessful logins.
Impersonate a user
This feature allows external developers or administrators to log into system under someone else’s account using
oro:user:impersonate console command. Impersonation is the best way to examine the system behavior when you’re trying to reproduce an issue reported by the user.
All changes made by impersonated users are marked accordingly in the Data audit, allowing you to clearly identify possible abuse of this feature.
Workflows got a major revision in this version of Oro Platform.
Multiple active workflows for an entity
We have lifted one of the most basic restrictions for our workflows, allowing you to have multiple active workflows for the same entity at the same time. The use cases for multiple workflows are endless: alternative sales workflows that the sales representative can choose when they decide how to deal with an opportunity; parallel sales follow-up and order fulfillment workflows for a placed order; you name it.
New design for workflow widget at record views
As it is now possible to have multiple active workflows on the same record, we had to redesign the workflow widget, so it can display states and let you run transitions of multiple workflows at once.
Mark workflows as exclusive
Two or more workflows can be marked as mutually exclusive so once one workflow from the exclusive group is started, others can no longer be run. This feature serves the use case of multiple alternative flows, e.g. sales flows: You have many to choose from, but once you’ve made your choice, you no longer need the alternatives.
Please note: so far, this feature can only be utilized by developers.
Manage user permissions to run individual workflows
Multiple active workflows for different tasks is a great function, but it brings additional complexity which many of the system users won’t really need. For example, if you have a sales follow-up flow and a support flow for your Magento order, chances are, the support representative don’t even need to know about the sales rep’s work, and the sales rep could be aware about the state of problem resolution, but should not intervene into it.
In order to fine-tune user’s access to workflows we have added workflow permissions to Role management interface, allowing you to configure:
- Visibility of the entire workflow and its steps/current step
- Ability to run workflow transactions
- Ability to run every individual workflow transaction
All workflow labels are now translatable to other languages similarly to other system interface, allowing you to create even better localizations for your users from different countries.
Other workflow engine capabilities
Please check OroPlatform release notes to learn more, as these capabilities are more technical and developer-oriented, and cannot be managed from the UI at the moment.
Translations and localizations
This feature allows system administrators to manage Oro Platform translations to different languages from within the system interfaces.
Define custom localizations which can then be applied to Oro Platform in the system, organization, or even personal configuration. The localization is a combination of language and formatting rules (locale).
Upload your own language packs
Language management has been moved from system configuration to separate interface under System > Localization > Languages. Here you can enable and disable system languages, download language packs for translation and upload your own language packs if you don’t want to depend on Crowdin translation or are not satisfied with it.
Manually translate UI elements
Translations can be manually applied to every UI element that is marked as translatable, such as workflow transition label or workflow step name. These translations are added under System > Localization > Translations.
Other features and improvements
Navigation and general UX
Application menu configuration
Application menu can now be managed and configured from the UI. You can adjust the menu for the entire application, or create personal menus for every user if you want to.
Show/hide filters at data views
Filters on data views (grids and the Kanban board) can now be hidden to save screen space. Click the funnel button in grid controls to toggle them on and off. Note that applied filters will still be visible above the grid, so you can identify which records you’re supposed to see.
Import & export execution in the background
Import and export of data will no longer block you from using the system—it will now be performed in the background, so you can continue working even when you are importing very large files with millions of records. Once the file is imported or exported, you will receive an email notification with report on import results or a link to download the exported file.
Enable or disable user emails as a feature
All email-related functionality can now be easily disabled if you are not using it and don’t want it to get in the way. A simple checkbox under System > Configuration > Email configuration will disable My emails page, user and system mailboxes, email activities, email-related widgets, and all email-related settings in both user and system/organization configuration. You can turn off emails for the entire system, or a specific organization.
Note that this feature does not affect transactional emails, such as notifications about password reset, or invites to calendar events. Email notifications will stay in place, and email templates will still be available for editing. Email marketing campaigns also won’t be affected.
Configure SMTP provider for system or organization
SMTP provider for transactional, marketing, and other emails sent from Oro Platform can now be configured explicitly in email configuration. You can choose a popular provider, such as Mailgun or Sendgrid, or set up your custom server.
System SMTP provider will also be used for outgoing user emails if their personal mailboxes weren’t configured. However, when set up, user’s mailbox SMTP settings will override the system SMTP provider.
Turn off HTML purifier for email templates
You can now create rich HTML templates in Oro Platform by simply pasting the HTML code prepared by designer into template editor. To make sure no tags are stripped, turn off HTML purifier in Email configuration settings for your system or organization.
Limit email attachment size
Email attachment size can now be limited in the system configuration (set to 50 MB by default) to reduce DB growth and adverse effects on application performance.
We would like to thank our community members Fabio Piro (@dewos) and Sufijen Bani (@sbani) for their contribution of this feature to OroPlatform.
Direct @service qb support in datagrids configuration
This is another feature provided by Fabio Piro (@dewos). Hooray to the Oro Community!