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