Please refer first to UPGRADE.md for the most important items that should be addressed before attempting to upgrade or during the upgrade of a vanilla Oro application.
The current file describes significant changes in the code that may affect the upgrade of your customizations.
- The
Oro\Bundle\EmailBundle\Provider\EmailRenderer
was reimplemented to support computed variables. The following changes were made:- remove extending of this class from
Twig_Environment
- method
renderWithDefaultFilters
was renamed torenderTemplate
- move loading of configuration to
Oro\Bundle\EntityBundle\Twig\Sandbox\TemplateRendererConfigProvider
- move rendering of template to
Oro\Bundle\EntityBundle\Twig\Sandbox\TemplateRenderer
- move formatting of entity related variables to
Oro\Bundle\EntityBundle\Twig\Sandbox\EntityFormatExtension
- remove extending of this class from
- The interface
Oro\Bundle\EmailBundle\Processor\VariableProcessorInterface
was moved toOro\Bundle\EntityBundle\Twig\Sandbox\VariableProcessorInterface
. The methodprocess
was changed fromprocess($variable, array $definition, array $data = [])
toprocess(string $variable, array $processorArguments, TemplateData $data): void
. This allows processors to add computed values. - The interface
Oro\Bundle\EmailBundle\Provider\SystemVariablesProviderInterface
was moved toOro\Bundle\EntityBundle\Twig\Sandbox\SystemVariablesProviderInterface
. The methodgetVariableDefinitions
was changed fromgetVariableDefinitions()
togetVariableDefinitions(): array
. The methodgetVariableValues
was changed fromgetVariableValues()
togetVariableValues(): array
. - The interface
Oro\Bundle\EmailBundle\Provider\EntityVariablesProviderInterface
was moved toOro\Bundle\EntityBundle\Twig\Sandbox\EntityVariablesProviderInterface
. The methodgetVariableDefinitions
was changed fromgetVariableDefinitions($entityClass = null)
togetVariableDefinitions(): array
. The methodgetVariableGetters
was changed fromgetVariableGetters($entityClass = null)
togetVariableGetters(): array
. By performance reasons new methodgetVariableProcessors(string $entityClass): array
was added. If methodgetVariableDefinitions
of your provider returns info about processors, move it togetVariableProcessors
.
- The redundant methods
getFormatterName
,getSupportedTypes
andisDefaultFormatter
were removed fromOro\Bundle\UIBundle\Formatter\FormatterInterface
. Usedata_type
attribute oforo_formatter
tag to specify the default formatter for the data type.
- The
ServiceLinkRegistry
and all relates classes was removed. To define a bag of lazy loaded services use Symfony Service Locator. The list of removed classes:Oro\Component\DependencyInjection\ServiceLinkRegistry
Oro\Component\DependencyInjection\ServiceLinkRegistryAwareInterface
Oro\Component\DependencyInjection\ServiceLinkRegistryAwareTrait
Oro\Component\DependencyInjection\Compiler\TaggedServiceLinkRegistryCompilerPass
Oro\Component\DependencyInjection\Exception\UnknownAliasException
- In
Oro\Bundle\EmailBundle\Controller\EmailController::checkSmtpConnectionAction
(oro_email_check_smtp_connection
route) action the request method was changed to POST. - In
Oro\Bundle\EmailBundle\Controller\EmailController::purgeEmailsAttachmentsAction
(oro_email_purge_emails_attachments
route) action the request method was changed to POST. - In
Oro\Bundle\EmailBundle\Controller\EmailController::linkAction
(oro_email_attachment_link
route) action the request method was changed to POST. - In
Oro\Bundle\EmailBundle\Controller\EmailController::userEmailsSyncAction
(oro_email_user_sync_emails
route) action the request method was changed to POST. - In
Oro\Bundle\EmailBundle\Controller\EmailController::toggleSeenAction
(oro_email_toggle_seen
route) action the request method was changed to POST. - In
Oro\Bundle\EmailBundle\Controller\EmailController::markSeenAction
(oro_email_mark_seen
route) action the request method was changed to POST. - In
Oro\Bundle\EmailBundle\Controller\EmailController::markAllEmailsAsSeenAction
(oro_email_mark_all_as_seen
route) action the request method was changed to POST.
- In
Oro\Bundle\EmbeddedFormBundle\Controller\EmbeddedFormController::deleteAction
(oro_embedded_form_delete
route) action the request method was changed to DELETE. - In
Oro\Bundle\EmbeddedFormBundle\Controller\EmbeddedFormController::defaultDataAction
(oro_embedded_form_default_data
route) action the request method was changed to POST.
- In
Oro\Bundle\EntityBundle\Controller\EntitiesController::deleteAction
(oro_entity_delete
route) action the request method was changed to DELETE.
- In
Oro\Bundle\EntityConfigBundle\Controller\AttributeController::removeAction
(oro_attribute_remove
route) action the request method was changed to DELETE. - In
Oro\Bundle\EntityConfigBundle\Controller\AttributeController::unremoveAction
(oro_attribute_unremove
route) action the request method was changed to POST. - In
Oro\Bundle\EntityConfigBundle\Controller\AttributeFamilyController::deleteAction
(oro_attribute_family_delete
route) action the request method was changed to DELETE.
- In
Oro\Bundle\EntityExtendBundle\Controller\ConfigEntityGridController::removeAction
(oro_entityextend_entity_remove
route) action the request method was changed to DELETE. - In
Oro\Bundle\EntityExtendBundle\Controller\ConfigEntityGridController::unremoveAction
(oro_entityextend_field_unremove
route) action the request method was changed to POST.
- In
Oro\Bundle\ImportExportBundle\Controller\ImportExportController::importValidateAction
(oro_importexport_import_validate
route) action the request method was changed to POST. - In
Oro\Bundle\ImportExportBundle\Controller\ImportExportController::importProcessAction
(oro_importexport_import_process
route) action the request method was changed to POST. - In
Oro\Bundle\ImportExportBundle\Controller\ImportExportController::instantExportAction
(oro_importexport_export_instant
route) action the request method was changed to POST. - Introduced concept of import/export owner. Applied approach with role-based owner-based permissions to the export and import functionality.
- Option
--email
has become required fororo:import:file
command. - Removed Message Queue Topics and related Processors. All messages with this topics will be rejected:
oro.importexport.send_import_error_notification
oro.importexport.import_http_preparing
oro.importexport.import_http_validation_preparing
oro.importexport.pre_cli_import
, should be usedoro.importexport.pre_import
instead.oro.importexport.cli_import
, should be usedoro.importexport.import
instead.
- In
Oro\Bundle\IntegrationBundle\Controller\IntegrationController::scheduleAction
(oro_integration_schedule
route) action the request method was changed to POST.
- In
Oro\Bundle\MessageQueueBundle\Controller\Api\Rest\JobController::interruptRootJobAction
(/api/rest/{version}/message-queue/job/interrupt/{id}
path) action the request method was changed to POST.
- API processor
oro_user.api.create.save_entity
was renamed tooro_user.api.create.save_user
.
- In
Oro\Bundle\WorkflowBundle\Controller\Api\Rest\ProcessController::activateAction
(/api/rest/{version}/process/activate/{processDefinition}
path) action the request method was changed to POST. - In
Oro\Bundle\WorkflowBundle\Controller\Api\Rest\ProcessController::deactivateAction
(/api/rest/{version}/process/deactivate/{processDefinition}
path) action the request method was changed to POST. - In
Oro\Bundle\WorkflowBundle\Controller\Api\Rest\WorkflowController::startAction
(/api/rest/{version}/workflow/start/{workflowName}/{transitionName}
path) action the request method was changed to POST. - In
Oro\Bundle\WorkflowBundle\Controller\Api\Rest\WorkflowController::transitAction
(/api/rest/{version}/workflow/transit/{workflowName}/{transitionName}
path) action the request method was changed to POST. - In
Oro\Bundle\WorkflowBundle\Controller\Api\Rest\WorkflowController::activateAction
(/api/rest/{version}/workflow/activate/{workflowName}/{transitionName}
path) action the request method was changed to POST. - In
Oro\Bundle\WorkflowBundle\Controller\Api\Rest\WorkflowController::deactivateAction
(/api/rest/{version}/workflow/deactivate/{workflowName}/{transitionName}
path) action the request method was changed to POST.
- Message Queue Topic
oro.importexport.pre_http_import
is deprecated in favor oforo.importexport.pre_import
. - Message Queue Topic
oro.importexport.http_import
is deprecated in favor oforo.importexport.import
.
- Layout context parameter
embedded_form_custom_layout
has been removed. Use layout updates instead.
- Plugin
jquery.mCustomScrollbar
has been removed. Use styled-scroll-bar
- Twig function
resource_granted
has been removed. Useis_granted
from Symfony instead.
- Commands
oro:platform:upgrade20:db-configs
andoro:platform:upgrade20
were removed because they are no longer used in version 3.x. Related logic was also removed. Useoro:platform:update
instead. - Service
oro_installer.namespace_migration
and the logic that used it were removed.
- Command
oro:workflow:definitions:upgrade20
was removed because it was used for 2.x version update only.
AssetBundle
replaces the deprecatedAsseticBundle
to build assets using Webpack. It currently supports only styles assets. JS assets are still managed by OroRequireJsBundle.
- Added
custom_fields
as a possible value forexclusion_policy
option ofentities
section ofResources/config/oro/api.yml
. This value can be used if it is required to exclude all custom fields (fields withis_extend
=true
andowner
=Custom
inextend
scope in entity configuration) that are not configured explicitly.
- Added possibility to set available mime types from configuration.
To add or remove available mime types, add changes to the
upload_file_mime_types
section andupload_image_mime_types
in the config.yml file:
oro_attachment:
upload_file_mime_types:
- application/msword
- application/vnd.ms-excel
- application/pdf
- application/zip
- image/gif
- image/jpeg
- image/png
upload_image_mime_types:
- image/gif
- image/jpeg
- image/png
- Bundle was removed, use AssetBundle instead
- The unused alias
oro_query_designer.virtual_field_provider
for the serviceoro_entity.virtual_field_provider.chain
was removed.
- Environment variable
ORO_PHP_PATH
is no longer supported for specifying path to PHP executable.
- Syntax of
Resources/config/oro/assets.yml
files for the management-console was changed to follow the same standard as the configuration files for the OroCommerce storefront. Use theinputs
node instead of the group names.
- assets:
css:
- 'my_custom_asset_group':
+ inputs:
- 'bundles/app/css/scss/first.scss'
- 'bundles/app/css/scss/second.scss'
- 'another_asset_group':
- 'bundles/app/css/scss/third.scss'
- Fixed the
depends_on
configuration option of theentities.fields
section ofResources/config/oro/api.yml
. Now, only entity property names (or paths that contain entity property names) can be used in it. In addition, exception handling of invalid values for this option was improved to return more useful exception messages.
- Enable filters for to-many associations. The following operators are implemented:
=
(eq
),!=
(neq
),*
(exists
),!*
(neq_or_null
),~
(contains
) and!~
(not_contains
). - Added documentation about filters.
- Added data flow diagrams for public actions. See Actions.
- Added
rest_api_prefix
andrest_api_pattern
configuration options andoro_api.rest.prefix
andoro_api.rest.pattern
DIC parameters to be able to reconfigure REST API base path. - Added trigger
disposeLayout
on DOM element inlayout
- Added Datagrid Settings functionality for flexible managing of filters and grid columns
- Added
oro.cache.abstract.without_memory_cache
that is the same asoro.cache.abstract
but without using additional in-memory caching, it can be used to avoid unnecessary memory usage and performance penalties if in-memory caching is not needed, e.g. you implemented some more efficient in-memory caching strategy around your cache service.
- Added
Oro\Bundle\SecurityBundle\Test\Functional\RolePermissionExtension
trait that can be used in functional tests where you need to change permissions for security roles.
- Added the
addBeforeActionPromise
static method ofBaseController
in JS which enables to postpone route action if the required async process is in progress.
- The event
oro_audit.collect_audit_fields
was removed. Use decoration oforo_dataaudit.converter.change_set_to_audit_fields
service instead. - The alias
oro_dataaudit.listener.entity_listener
for the serviceoro_dataaudit.listener.send_changed_entities_to_message_queue
was removed.
- Removed
oro.entity_config.field.after_remove
event. Useoro.entity_config.post_flush
event andConfigManager::getFieldConfigChangeSet('extend', $className, $fieldName)
method to check if a field was removed. If the change set hasis_deleted
attribute and its value is changed fromfalse
totrue
than a field was removed.
- Removed the following DIC parameters:
oro_notification.event_entity.class
,oro_notification.emailnotification.entity.class
,oro_notification.massnotification.entity.class
,oro_notification.entity_spool.class
,oro_notification.manager.class
,oro_notification.email_handler.class
,oro_notification.doctrine_listener.class
,oro_notification.event_listener.mass_notification.class
,oro_notification.form.type.email_notification.class
,oro_notification.form.type.recipient_list.class
,oro_notification.form.handler.email_notification.class
,oro_notification.form.type.email_notification_entity_choice.class
,oro_notification.email_notification.manager.api.class
,oro_notification.mailer.transport.spool_db.class
,oro_notification.mailer.transport.spool_entity.class
,oro_notification.event_listener.email_notification_service.class
,oro_notification.email_notification_entity_provider.class
,oro_notification.mass_notification_sender.class
.
- Removed the
loadBeforeAction
andaddToReuse
static methods ofBaseController
in JS. Global Views and Components can now be defined in the HTML over data attributes, the same way as an ordinary Page Component.
- Removed
oro_security.acl_helper.process_select.after
event, create Access Rule instead. - Removed
Oro\Bundle\SecurityBundle\ORM\Walker\AclWalker
,Oro\Bundle\SecurityBundle\ORM\Walker\Condition\AclConditionInterface
,Oro\Bundle\SecurityBundle\ORM\Walker\Condition\AclCondition
,Oro\Bundle\SecurityBundle\ORM\Walker\Condition\JoinAclCondition
,Oro\Bundle\SecurityBundle\ORM\Walker\Condition\JoinAssociationCondition
,Oro\Bundle\SecurityBundle\ORM\Walker\Condition\AclConditionStorage
,Oro\Bundle\SecurityBundle\ORM\Walker\Condition\SubRequestAclConditionStorage
andOro\Bundle\SecurityBundle\ORM\Walker\AclConditionalFactorBuilder
classes because now ACL restrictions applies with Access Rules byOro\Bundle\SecurityBundle\ORM\Walker\AccessRuleWalker
. - Removed
Oro\Bundle\SecurityBundle\ORM\Walker\AclHelper::applyAclToCriteria
method. Please useapply
method with Doctrine Query or Query builder instead.
- Removed all logic related with column manager. The logic of column manager was transformed and expanded in Datagrid Settings
- Removed
excluded_fields
deprecated configuration attribute for an entity. Useexclude
attribute for a field instead. - Removed
result_name
deprecated configuration attribute for a field. Useproperty_path
attribute instead. - Removed
orderBy
deprecated configuration attribute. Useorder_by
attribute instead. - Removed deprecated signature
function (array &$item) : void
of post serialization handler that can be specified inpost_serialize
configuration attribute. Usefunction (array $item, array $context) : array
instead.
- The class
Oro\Component\Testing\Validator\AbstractConstraintValidatorTest
was removed. UseSymfony\Component\Validator\Test\ConstraintValidatorTestCase
instead.
- Changes in
/api/addresses
REST API resource:- the attribute
created
was renamed tocreatedAt
- the attribute
updated
was renamed toupdatedAt
- the attribute
- By default processors for
customize_loaded_data
action are executed only for primary and included entities. Useidentifier_only: true
tag attribute if your processor should be executed for relationships. finish_submit
event forcustomize_form_data
action was renamed topost_validate
and newpre_validate
event was added.
- Renamed the service
oro_notification.event_listener.email_notification_service
tooro_notification.grid_helper
. - Marked the following services as
private
:oro_notification.entity_spool
,oro_notification.form.subscriber.additional_emails
,oro_notification.doctrine.event.listener
,oro_notification.model.notification_settings
,oro_notification.email_handler
,oro_notification.mailer.spool_db
,oro_notification.mailer.transport.eventdispatcher
,oro_notification.mailer.transport
,swiftmailer.mailer.db_spool_mailer
,oro_notification.email_notification_entity_provider
,oro_notification.form.subscriber.contact_information_emails
,oro_notification.provider.email_address_with_context_preferred_language_provider
.
- Changed all UI of backoffice
- Updated version of bootstrap from 2.3.0 to 4.1.1
- All global JS Views and Components are defined in the HTML through data attributes.
- Change target and name of a layout event. Now
layout
triggersinitLayout
event on DOM element insteadlayoutInit
onmediator
oro_require_js.js_engine
configuration option was removed. Useoro_asset.nodejs_path
instead.
Oro\Bundle\SecurityBundle\ORM\Walker\AclHelper::apply
method logic was changed to support Access rules.oro_security.encoder.mcrypt
service was changed tooro_security.encoder.default
.
- Changes in
/api/taxonomies
REST API resource:- the attribute
created
was renamed tocreatedAt
- the attribute
updated
was renamed toupdatedAt
- the attribute
- In case when message processor specified in message not found this message will be rejected and exception will be thrown.
- Added
direction
option for fields in theactions
section to be able to specify if the request data and the the response data can contain a field. Possible values areinput-only
,output-only
orbidirectional
. Thebidirectional
is the default value. - Added the following operators for ComparisonFilter:
*
(exists
),!*
(neq_or_null
),~
(contains
),!~
(not_contains
),^
(starts_with
),!^
(not_starts_with
),$
(ends_with
),!$
(not_ends_with
). For details see how_to.md. - Added the
case_insensitive
andvalue_transformer
options for ComparisonFilter. See how_to.md for more details.
- Removed deprecated routes contain
_format
placeholder.
- The
oro_api.get_config.add_owner_validator
service was renamed tooro_organization.api.config.add_owner_validator
- The
oro_api.request_type_provider
DIC tag was renamed tooro.api.request_type_provider
- The
oro_api.routing_options_resolver
DIC tag was renamed tooro.api.routing_options_resolver
- The
oro_api.api_doc_annotation_handler
DIC tag was renamed tooro.api.api_doc_annotation_handler
- Added a possibility to enable custom API. See how_to.md for more information.
- Removed the deprecated
Oro\Bundle\ApiBundle\Processor\CustomizeLoadedDataContext
class - Removed the deprecated
Oro\Bundle\ApiBundle\Model\EntityDescriptor
class
- Removed the deprecated
getDefaultTimeout
andsetDefaultTimeout
methods from theOro\Bundle\EntityConfigBundle\Tools\CommandExecutor
class
- Removed the
Oro\Bundle\ImportExportBundle\EventListener\ExportJoinListener
class and the correspondingoro_importexport.event_listener.export_join_listener
service - The
%oro_importexport.file.split_csv_file.size_of_batch%
parameter was removed; use%oro_importexport.import.size_of_batch%
instead.
- Removed the deprecated
getDefaultTimeout
andsetDefaultTimeout
methods from theOro\Bundle\InstallerBundle\CommandExecutor
class
- Removed twig filter
oro_html_tag_trim
; useoro_html_escape
instead. See documentation. - Removed twig filter
oro_html_purify
; useoro_html_strip_tags
instead. See documentation.
- Removed the
oro_workflow.cache.provider.workflow_definition
cache provider. Doctrine result cache is used instead.
-
The HTTP method depended routes and controllers were replaced with the more general ones. The following is the full list of changes:
Removed Route Removed Controller New Route New Controller oro_rest_api_get OroApiBundle:RestApi:get oro_rest_api_item OroApiBundle:RestApi:item oro_rest_api_delete OroApiBundle:RestApi:delete oro_rest_api_item OroApiBundle:RestApi:item oro_rest_api_patch OroApiBundle:RestApi:patch oro_rest_api_item OroApiBundle:RestApi:item oro_rest_api_post OroApiBundle:RestApi:post oro_rest_api_list OroApiBundle:RestApi:list oro_rest_api_cget OroApiBundle:RestApi:cget oro_rest_api_list OroApiBundle:RestApi:list oro_rest_api_cdelete OroApiBundle:RestApi:cdelete oro_rest_api_list OroApiBundle:RestApi:list oro_rest_api_get_subresource OroApiBundle:RestApiSubresource:get oro_rest_api_subresource OroApiBundle:RestApi:subresource oro_rest_api_get_relationship OroApiBundle:RestApiRelationship:get oro_rest_api_relationship OroApiBundle:RestApi:relationship oro_rest_api_patch_relationship OroApiBundle:RestApiRelationship:patch oro_rest_api_relationship OroApiBundle:RestApi:relationship oro_rest_api_post_relationship OroApiBundle:RestApiRelationship:post oro_rest_api_relationship OroApiBundle:RestApi:relationship oro_rest_api_delete_relationship OroApiBundle:RestApiRelationship:delete oro_rest_api_relationship OroApiBundle:RestApi:relationship
- Twig filter
oro_tag_filter
was renamed tooro_html_strip_tags
. See documentation.
- The
oro_rest_api_get_user_profile
route was removed; use theoro_rest_api_user_profile
route instead. - The
Oro\Bundle\UserBundle\Api\Routing\UserProfileRestRouteOptionsResolver
and theOro\Bundle\UserBundle\Api\ApiDoc\UserProfileRestRouteOptionsResolver
route option resolvers were removed in favor of routing.yml.
- Added the configuration search provider functionality (see documentation)
- Service should be registered as a service with the
oro_config.configuration_search_provider
tag. - Class should implement
Oro\Bundle\ConfigBundle\Provider\SearchProviderInterface
interface.
- Service should be registered as a service with the
- Added the
oro_entity.structure.options
event (see documentation) - Added the
Oro\Bundle\EntityBundle\Provider\EntityStructureDataProvider
provider to retrieve data of entities structure (see documentation) - Added JS
EntityModel
[?] (see documentation) - Added JS
EntityStructureDataProvider
[?] (see documentation) - Added
FieldChoiceView
[?] Backbone view, as replacement for jQuery widgetoroentity.fieldChoice
.
- The
Oro\Bundle\EntityExtendBundle\Tools\ExtendHelper::convertName
method was renamed toconvertEnumNameToCode
, visibility of this method was changed frompublic
toprivate
and it will throw an exception when theiconv
function fails on converting the input string, instead of hashing the input string.
- Added
FunctionChoiceView
[?] Backbone view, as replacement for jQuery widgetoroquerydesigner.functionChoice
.
- Added
SegmentChoiceView
[?] Backbone view, as replacement for jQuery widgetorosegment.segmentChoice
.
- Added JS
Registry
[?] (see documentation)
- Added a new DIC compiler pass
Oro\Bundle\PlatformBundle\DependencyInjection\Compiler\ConsoleGlobalOptionsCompilerPass
- Added the
oro_platform.console.global_options_provider
tag to be able to register the console command global options provider forGlobalOptionsProviderRegistry
[?] and it will be used inGlobalOptionsListener
[?]. This providers must implementGlobalOptionsProviderInterface
[?].
-
The
build_query
group was removed fromupdate
anddelete
actions. From now the updating/deleting entity is loaded byOro\Bundle\ApiBundle\Processor\Shared\LoadEntity
processor instead ofOro\Bundle\ApiBundle\Processor\Shared\LoadEntityByOrmQuery
processor. -
The priorities of some groups for the
update
action were changed. All changes are in the following table:Group Old Priority New Priority load_data -50 -40 transform_data -60 -50 save_data -70 -60 normalize_data -80 -70 finalize -90 -80 normalize_result -100 -90 -
The priorities of some groups for the
delete
action were changed. All changes are in the following table:Group Old Priority New Priority load_data -50 -40 delete_data -60 -50 finalize -70 -60 normalize_result -80 -70 -
Handling of
percent
data type in POST and PATCH requests was fixed. Before the fix, the percent value in GET and POST/PATCH requests was inconsistent; in POST/PATCH requests it was divided by 100, but GET request returned it as is. In this fix, the division by 100 was removed. -
For string filters the default value of the
allow_array
option was changed fromtrue
tofalse
. This was done to allow filter data if a string field contains a comma.
- Parameter
count_hints
will have value ofhints
unless otherwise specified. If other words from now
datagrids:
grid-name:
...
source:
...
hints:
- SOME_QUERY_HINT
equivalent
datagrids:
grid-name:
...
source:
...
hints:
- SOME_QUERY_HINT
count_hints:
- SOME_QUERY_HINT
- Refactored the
SegmentComponent
js-component to useEntityStructureDataProvider
.
- In the
Oro\Bundle\SidebarBundle\Model\WidgetDefinitionRegistry
class, the return type in thegetWidgetDefinitions
andgetWidgetDefinitionsByPlacement
methods were changed fromArrayCollection
toarray
.
- The
loadModules
method of the'oroui/js/tools'
js-module now returns a promise object. - The default value for the
keepElement
property of aChaplin.View
has changed fromfalse
tonull
when no element is provided, and fromfalse
totrue
when the element is provided in the options.
- Refactored the
WorkflowEditorComponent
andWorkflowViewerComponent
js-components to useEntityStructureDataProvider
.
- JS util
EntityFieldsUtil
is deprecated in favor ofEntityStructureDataProvider
.
- The parameter
oro_attachment.listener.file_listener.class
was removed form the service container.
- The parameter
oro_comment.comment_lifecycle_listener.class
was removed form the service container.
- A jQuery widget
oroentity.fieldChoice
is replaced with theFieldChoiceView
Backbone view. - A jQuery widget
oroentity.fieldsLoader
is removed. Please useEntityStructureDataProvider
instead.
- The parameter
oro_imap.listener.user_email_origin.class
was removed form the service container
- A jQuery widget
oroquerydesigner.functionChoice
is replaced with theFunctionChoiceView
Backbone view.
- The parameter
oro_reminder.event_listener.reminder_listener.class
was removed form the service container.
- A jQuery widget
orosegment.segmentChoice
is replaced with theSegmentChoiceView
Backbone view.
- The parameter
oro_sidebar.widget_definition.registry.class
was removed form the service container. - The service
oro_sidebar.request.handler
was removed.
- The parameter
oro_sso.event_listener.user_email_change_listener.class
was removed form the service container.
- Removed the
loadModule
methods from'oroui/js/tools'
js-module. Please useloadModules
instead.
- The parameter
oro_workflow.listener.process_data_serialize.class
was removed form the service container. - The parameter
oro_workflow.listener.workflow_data_serialize.class
was removed form the service container.
- Added
ActivityConditionView
as substitution for removedoroactivity.activityCondition
jQuery widget.
- Added an additional syntax for data filters:
key[operator_name]=value
. For exampleGET /api/users?filter[id][neq]=2
can be used instead ofGET /api/users?filter[id]!=2
. The supported operators areeq
,neq
,lt
,lte
,gt
andgte
. - Added a possibility to specify the documentation_resource option for the same entity in different
Resources/config/oro/api.yml
files. It can be helpful when some bundle needs to add a field to an entity declared in another bundle. - Added a possibility to configure own identifier field(s) instead of the database primary key. For details see how_to.md
- Added filters for the following data types:
smallint
,date
,time
,guid
,percent
,money
andduration
- Added a range filter and option
allow_range
that allow to enable or disable this filter. An example of usage of this filter/api/leads?filter[createdAt]=2017-10-19T10:00:00..2017-10-19T10:30:00
- Added
DataAuditConditionView
as substitution for removedoroauditquerydesigner.dataAuditCondition
jQuery widget.
- Added the
Oro\Bundle\EntityConfigBundle\Attribute\Type\AttributeTypeInterface
interface that should be implemented in case a new type of arguments was added.
- Added method
onPreCreateDelayed
toOro\Component\MessageQueue\Job\ExtensionInterface
interface. - Added Stale Jobs functionality
- Added the
setJobConfigurationProvider
method toOro\Component\MessageQueue\Job\JobProcessor
- Added the new oro.message_queue_job.status.stale state
- Added the new
Oro\Component\MessageQueue\Provider\JobConfigurationProviderInterface
interface
- Added the
- Added interface
Oro\Bundle\MessageQueueBundle\Consumption\Extension\ClearerInterface
. For details see container_in_consumer.md - Added configuration for Stale Jobs
- Added
ConditionBuilderView
as substitution for removedoroquerydesigner.conditionBuilder
jQuery widget. - Added
AbstractConditionView
andFieldConditionView
as substitution for removedoroquerydesigner.fieldCondition
jQuery widget. - Added
AggregatedFieldConditionView
as substitution for removedoroauditquerydesigner.aggregatedFieldCondition
jQuery widget.
- Added parameters
websocket_frontend_path
andwebsocket_backend_path
. Usage
- Class
Oro\Bundle\ApiBundle\Config\EntityDefinitionConfig
- method
hasDocumentationResource
was renamed tohasDocumentationResources
- method
getDocumentationResource
was renamed togetDocumentationResources
- method
setDocumentationResource
was renamed tosetDocumentationResources
- method
- Added a possibility to rename associations. This leads the following backward incompatible changes:
- the data passed to
customize_loaded_data
processors were changed: from now these data contain already renamed fields and associations are not collapsed
- the data passed to
- The performance and memory usage was optimized. As result the following changes were done:
- the building of groups and processors maps functionality was moved from
Oro\Component\ChainProcessor\ProcessorBag
toOro\Component\ChainProcessor\ProcessorBagConfigBuilder
- methods
addGroup
andaddProcessor
were removed fromOro\Component\ChainProcessor\ProcessorBag
- the schema of data stored in
Oro\Component\ChainProcessor\ProcessorBag::$processors
property was changed from[action => [['processor' => processor id, 'attributes' => [attribute name => attribute value, ...]], ...], ...]
to[action => [[processor id, [attribute name => attribute value, ...]], ...], ...]
- the schema of data stored in
Oro\Component\ChainProcessor\ProcessorIterator::$processors
property was changed from[['processor' => processor id, 'attributes' => [attribute name => attribute value, ...]], ...]
to[[processor id, [attribute name => attribute value, ...]], ...]
- the DIC compiler pass
Oro\Component\ChainProcessor\DependencyInjection\LoadProcessorsCompilerPass
was split into two compiler passesOro\Component\ChainProcessor\DependencyInjection\LoadProcessorsCompilerPass
andOro\Component\ChainProcessor\DependencyInjection\LoadApplicableCheckersCompilerPass
- added new DIC compiler pass
Oro\Component\ChainProcessor\DependencyInjection\LoadAndBuildProcessorsCompilerPass
- the building of groups and processors maps functionality was moved from
- Implementation should be registered as a service with the
oro_entity_config.attribute_type
tag.
- Added a possibility to rename associations. This leads the following backward incompatible changes:
- the
Oro\Component\EntitySerializer\EntitySerializer
class was changed a lot. If you have classes extend this class, carefully check them - the data passed to
post_serialize
handlers were changed: from now these data contain already renamed fields and associations are not collapsed
- the
- Interface
Oro\Component\MessageQueue\Job\ExtensionInterface
- renamed method
onCreateDelayed
toonPostCreateDelayed
- renamed method
- Method
setPersistentServices
was moved fromOro\Bundle\MessageQueueBundle\Consumption\Extension\ContainerResetExtension
toOro\Bundle\MessageQueueBundle\Consumption\Extension\ContainerClearer
- Entity
Oro\Bundle\WebsiteSearchBundle\Entity\IndexDecimal
:- changed decimal field
value
:precision
changed from10
to21
.scale
changed from2
to6
.
- changed decimal field
- Added the Oro\Bundle\SearchBundle\Formatter\DateTimeFormatter class that should be used to format the \DateTime object in a specific string. Documentation
- The property
restrictions
was excluded from output results of the method "Get Workflow Definition" (/api/rest/{version}/workflowdefinition/{workflowDefinition}.{_format}
).
- Class
Oro/Bundle/SearchBundle/Engine/Orm/DBALPersistenceDriverTrait
is deprecated. The functionality was merged intoBaseDriver
- Refactored setup of ActivityCondition for QueryDesigner's ConditionBuilder.
- jQuery widget
oroactivity.activityCondition
replaced withActivityConditionView
Backbone view, removed unused extensions support in its options. - Removed class
Oro\Bundle\ActivityListBundle\EventListener\SegmentWidgetOptionsListener
.
- jQuery widget
- jQuery widget
oroauditquerydesigner.dataAuditCondition
replaced withDataAuditConditionView
Backbone view.
- jQuery widget
oroquerydesigner.conditionBuilder
replaced withConditionBuilderView
Backbone view. - jQuery widget
oroquerydesigner.fieldCondition
refactored intoAbstractConditionView
andFieldConditionView
Backbone views. - jQuery widget
oroauditquerydesigner.aggregatedFieldCondition
replaced withAggregatedFieldConditionView
Backbone view.
- Removed service
oro_search.search.engine.storer
- Class
Oro\Bundle\SecurityBundle\Owner\AbstractOwnerTreeProvider
- internal cache parameter
$tree
was removed cause all cache providers are already automatically decorated by the memory cache provider
- internal cache parameter
- Removed
renderResetButton()
macro from Oro/Bundle/WorkflowBundle/Resources/views/macros.html.twig. Also removed usage of this macro from two files:Oro/Bundle/WorkflowBundle/Resources/views/Widget/widget/button.html.twig
Oro/Bundle/WorkflowBundle/Resources/views/Widget/widget/buttons.html.twig
- Removed --show-execution-time and --log-feature-execution-time parameters along the MeasureExecutionTimeController
- Class
OroTextareaType
[?] was removed. Thestrip_tags
form option should be used instead. - service
oro_form.type.textarea
was removed.
- Added tag
oro.config_cache_warmer.provider
to be able to register custom warmer configuration provider forCacheWarmerListener
[?]. It must implementConfigCacheWarmerInterface
[?].
- Was added new parameter to
ConfigurableAddOrReplaceStrategy
[?] class constructor andoro_importexport.strategy.configurable_add_or_replace
service. New parameter idoro_security.owner.checker
service that helps check the owner during import. JobResult
[?] have newneedRedelivery
flag.JobExecutor
[?] in case of any of catched exception during Job processing is a type ofDoctrine\DBAL\Exception\UniqueConstraintViolationException
JobResult will have aneedRedelivery
flag set to true.ImportMessageProcessor
[?] is able to catch newOro\Component\MessageQueue\Exception\JobRedeliveryException
and it this case is able to requeue a message to process
- Added interface
Oro\Component\MessageQueue\Job\ExtensionInterface
that can be used to do some additional work before and after job processing.
- Some inline underscore templates were moved to separate .html file for each template.
- Class
PreciseOrderByExtension
[?] was renamed toHintExtension
[?]. Hint name and priority now passed as 2nd and 3rd constructor arguments HINT_DISABLE_ORDER_BY_MODIFICATION_NULLS
was enabled by default for all data grids. To enable order by nulls behavior same to MySQL for PostgreSQL next hint should be added to data grid config
datagrids:
grid-name:
...
source:
...
hints:
- { name: HINT_DISABLE_ORDER_BY_MODIFICATION_NULLS, value: false }
- Tokenizer configuration has been changed. A full rebuilding of the backend search index is required.
- Email entity is not ACL protected entity so it should not contain any permissions for it.
- method
handleChangedAddresses
in classEmailOwnerManager
[?] does not persist new EmailAddresses anymore, but returns array of updated entities and entities to create
- Some inline underscore templates were moved to separate .html file for each template.
- Class
ConfigurableTableDataConverter
[?] does not initialize backend headers during import anymore. MethodgetHeaderConversionRules
previously calledinitialize
method to load both conversion rules and backend headers, but now it calls onlyinitializeRules
- Parameter
oro_message_queue.maintance.idle_time
was renamed tooro_message_queue.maintenance.idle_time
- Class
Oro\Component\MessageQueue\Consumption\Extension\SignalExtension
- the visibility of method
interruptExecutionIfNeeded
was changed frompublic
toprotected
- the visibility of method
- Some inline underscore templates were moved to separate .html file for each template.
'oroui/js/tools'
JS-module does not contain utils methods fromCaplin.utils
any more. Require'chaplin'
directly to get access to them.'oroui/js/app/components/base/component-container-mixin'
Each view on which we want to call'initLayout()'
method (to intialize all components within) have to be marked as separated layout by adding'data-layout="separate"'
attribute. Otherwise'Error'
will be thrown.
- The
data_transformer
option for fields was removed fromResources/config/oro/api.yml
. This option is required rarely and it is quite confusing for developers because its name is crossed with data transformers used in Symfony Forms. However, the purpose of this option was different and it was used to transform a field value from one data type to another when loading data. If you used this option for some of your API resources, please replace it with a processor for customize_loaded_data action. - Class
ApiActions
[?]
- Removed usage of the
'tinymce/jquery.tinymce'
extension. Use'tinymce/tinymce'
directly instead
- Removed method
getUniqueId
from classBaseDriver
[?]. Use methodgetJoinAttributes
instead.
- Services
oro_segment.query_converter.segment
andoro_segment.query_converter.segment.link
were removed.
- Removed the use of js-application build
js/oro.min.js
from login page. Usehead_script
twig placeholder to include custom script on login page.
- Fixed handling of
priority
attribute of the tagoro_message_queue.consumption.extension
to work in the same way as other Symfony's tagged services. From now the highest the priority number, the earlier the extension is executed. - Service
oro_message_queue.client.consume_messages_command
was removed - Service
oro_message_queue.command.consume_messages
was removed - The extension
TokenStorageClearerExtension
[?] was removed. This job is handled byContainerResetExtension
[?] extension.
-
Class
SegmentQueryConverterFactory
[?] was created. It was registered as the serviceoro_segment.query.segment_query_converter_factory
.services.yml
oro_segment.query.segment_query_converter_factory: class: 'Oro\Bundle\SegmentBundle\Query\SegmentQueryConverterFactory' arguments: - '@oro_query_designer.query_designer.manager' - '@oro_entity.virtual_field_provider.chain' - '@doctrine' - '@oro_query_designer.query_designer.restriction_builder' - '@oro_entity.virtual_relation_provider.chain' public: false
-
Service
oro_segment.query.segment_query_converter_factory.link
was created to initialize the serviceoro_segment.query.segment_query_converter_factory
inDynamicSegmentQueryBuilder
[?].services.yml
oro_segment.query.segment_query_converter_factory.link: tags: - { name: oro_service_link, service: oro_segment.query.segment_query_converter_factory }
-
Class
DynamicSegmentQueryBuilder
[?] was changed to use serviceoro_segment.query.segment_query_converter_factory.link
instead oforo_segment.query_converter.segment.link
.- public method
setSegmentQueryConverterFactoryLink(ServiceLink $segmentQueryConverterFactoryLink)
was added.
- public method
-
Definition of service
oro_segment.query.dynamic_segment.query_builder
was changed in services.yml. Beforeoro_segment.query.dynamic_segment.query_builder: class: %oro_segment.query.dynamic_segment.query_builder.class% arguments: - '@oro_segment.query_converter.segment.link' - '@doctrine'
After
oro_segment.query.dynamic_segment.query_builder: class: %oro_segment.query.dynamic_segment.query_builder.class% arguments: - '@oro_segment.query_converter.segment.link' - '@doctrine' calls: - [setSegmentQueryConverterFactoryLink, ['@oro_segment.query.segment_query_converter_factory.link']]
- Added a possibility to change aggregation strategy for a job summary. An aggregator should implement
ContextAggregatorInterface
[?]. Added two job summary aggregators: - Added trait
AddToJobSummaryStepTrait
[?] that can be used in steps supportadd_to_job_summary
parameter.
- Class
LoggerClientDecorator
[?] was added. ImplementsRestClientInterface
. Use it for logging client. Add the ability to make additional requests to the server.
- Added event
oro_migration.data_fixtures.pre_load
that is raised before data fixtures are loaded - Added event
oro_migration.data_fixtures.post_load
that is raised after data fixtures are loaded
- Added new action
create_note
related classCreateNoteAction
[?]
- Class
ReportCacheCleanerListener
[?] was added. It cleans cache of report grid on postUpdate event of Report entity.
- Added provider
oro_workflow.provider.workflow_definition
to manage cached instances ofWorkflowDefinitions
. - Added cache provider
oro_workflow.cache.provider.workflow_definition
to hold cached instances ofWorkflowDefinitions
.
- Class
EmailExtension
[?] methodgetSecurityFacade
was replaces withgetAuthorizationChecker
andgetTokenAccessor
- Class
EmailQueryFactory
[?] methodprepareQuery
renamed toaddFromEmailAddress
- The performance of the following data grids was improved. As a result, their definitions and TWIG templates were significantly changed. The main change is to return only the fields required for the grid, instead of returning the whole entity
base-email-grid
email-grid
dashboard-recent-emails-inbox-grid
dashboard-recent-emails-sent-grid
dashboard-recent-emails-new-grid
EmailBundle/Resources/views/Email/Datagrid/Property/contacts.html.twig
EmailBundle/Resources/views/Email/Datagrid/Property/date.html.twig
EmailBundle/Resources/views/Email/Datagrid/Property/date_long.html.twig
EmailBundle/Resources/views/Email/Datagrid/Property/from.html.twig
EmailBundle/Resources/views/Email/Datagrid/Property/mailbox.html.twig
EmailBundle/Resources/views/Email/Datagrid/Property/recipients.html.twig
EmailBundle/Resources/views/Email/Datagrid/Property/subject.html.twig
- TWIG macro
wrapTextToTag
was marked as deprecated
- Updated jQuery Validation plugin to 1.6.0 version
- Updated TinyMCE to 4.6.* version
- Interface
RestResponseInterface
[?] was changed:- Methods
getContentEncoding
,getContentLanguage
,getContentLength
,getContentLocation
,getContentDisposition
,getContentMd5
,getContentRange
,getContentType
,isContentType
were superseded bygetHeader
method
- Methods
- Updated Moment.js to 2.18.* version
- Updated Numeral.js to 2.0.6 version
- Entity
EmailNotification
[?] became Extend
- Class Oro\Bundle\ReportBundle\Grid\ReportDatagridConfigurationProvider was modified to use doctrine cache instead of caching the DatagridConfiguration value in property $configuration
Before
After
class ReportDatagridConfigurationProvider { /** * @var DatagridConfiguration */ protected $configuration; public function getConfiguration($gridName) { if ($this->configuration === null) { ... $this->configuration = $this->builder->getConfiguration(); } return $this->configuration; } }
class ReportDatagridConfigurationProvider { /** * Doctrine\Common\Cache\Cache */ protected $reportCacheManager; public function getConfiguration($gridName) { $cacheKey = $this->getCacheKey($gridName); if ($this->reportCacheManager->contains($cacheKey)) { $config = $this->reportCacheManager->fetch($cacheKey); $config = unserialize($config); } else { $config = $this->prepareConfiguration($gridName); $this->reportCacheManager->save($cacheKey, serialize($config)); } return $config; } }
- Class
OroSecurityExtension
[?]- method
getSecurityFacade
was replaces withgetAuthorizationChecker
andgetTokenAccessor
- method
- Class
TestListener
namespace added, useTestListener
[?] instead
- Updated ChaplinJS to 1.2.0 version
- Updated Autolinker.js to 1.4.* version
- Updated jQuery-Form to 4.2.1 version
- Updated jQuery.Numeric to 1.5.0 version
- Updated Lightgallery.js to 1.4.0 version
- Updated RequireJS test.js plugin to 2.0.* version
- Updated Jquery-UI-Multiselect-Widget to 2.0.1 version
- Updated Timepicker.js plugin to 1.11.* version
- Updated Datepair.js plugin to 0.4.* version
- Updated jQuery.Uniform to 4.2.0 version
- Class
WorkflowRegistry
[?]:- following protected methods were moved to
WorkflowDefinitionProvider
:refreshWorkflowDefinition
getEntityManager
getEntityRepository
- following protected methods were moved to
- Datagrid filter
WorkflowFilter
[?] changed namespace
- Class
EmailRecipientRepository
[?] methodgetThreadUniqueRecipients
was marked as deprecated. UseEmailGridResultHelper::addEmailRecipients
instead - Class
FolderType
[?] methodoutcomingTypes
was marked as deprecated. UseoutgoingTypes
instead - Class
EmailExtension
[?] methodgetEmailThreadRecipients
was marked as deprecated. UseEmailGridResultHelper::addEmailRecipients
instead
- Interface
AccessLevelOwnershipDecisionMakerInterface
[?]- method
isGlobalLevelEntity
was marked as deprecated, use methodisOrganization
instead - method
isLocalLevelEntity
was marked as deprecated, use methodisBusinessUnit
instead - method
isBasicLevelEntity
was marked as deprecated, use methodisUser
instead - method
isAssociatedWithGlobalLevelEntity
was marked as deprecated, use methodisAssociatedWithOrganization
instead - method
isAssociatedWithLocalLevelEntity
was marked as deprecated, use methodisAssociatedWithBusinessUnit
instead - method
isAssociatedWithBasicLevelEntity
was marked as deprecated, use methodisAssociatedWithUser
instead
- method
- Interface
OwnerTreeInterface
[?] was renamed toOwnerTreeBuilderInterface
- method
addBasicEntity
was marked as deprecated, use methodaddUser
instead - method
addGlobalEntity
was marked as deprecated, use methodaddUserOrganization
instead - method
addLocalEntityToBasic
was marked as deprecated, use methodaddUserBusinessUnit
instead - method
addDeepEntity
was marked as deprecated, use methodaddBusinessUnitRelation
instead - method
addLocalEntity
was marked as deprecated, use methodaddBusinessUnit
instead
- method
- Interface
OwnershipMetadataInterface
[?]- method
isBasicLevelOwned
was marked as deprecated, use methodisUserOwned
instead - method
isLocalLevelOwned
was marked as deprecated, use methodisBusinessUnitOwned
instead - method
isGlobalLevelOwned
was marked as deprecated, use methodisOrganizationOwned
instead - method
isSystemLevelOwned
was marked as deprecated - method
getGlobalOwnerColumnName
was marked as deprecated, use methodgetOrganizationColumnName
instead - method
getGlobalOwnerFieldName
was marked as deprecated, use methodgetOrganizationFieldName
instead
- method
- Interface
MetadataProviderInterface
[?] was renamed toOwnershipMetadataProviderInterface
- method
getBasicLevelClass
was marked as deprecated, use methodgetUserClass
instead - method
getLocalLevelClass
was marked as deprecated, use methodgetBusinessUnitClass
instead - method
getGlobalLevelClass
was marked as deprecated, use methodgetOrganizationClass
instead
- method
- Class
ExtendClassLoader
[?] was removed. TheOro\Component\PhpUtils\ClassLoader
is used instead of it - service
oro_email.listener.role_subscriber
was removed.
- Interface
RestResponseInterface
[?] was changed. MethodsgetRawHeaders
,xml
,getRedirectCount
,getEffectiveUrl
were completely removed - Interface
RestClientInterface
[?] was changed. MethodgetXML
was completely removed. - Class
GuzzleRestClient
[?] methodgetXML
was removed, please use a simpleget
method instead and convert its result to XML - Class
GuzzleRestResponse
[?]:- Methods
getRawHeaders
,xml
,getRedirectCount
,getEffectiveUrl
were removed, in case you need them just use the construction such as$response->getSourceResponse()->xml()
- Methods
getContentEncoding
,getContentLanguage
,getContentLength
,getContentLocation
,getContentDisposition
,getContentMd5
,getContentRange
,getContentType
,isContentType
were removed, but you can get the same values if you use$response->getHeader('Content-Type')
or$response->getHeader('Content-MD5')
, for example.
- Methods
- Removed translation label
oro.integration.sync_error_invalid_credentials
- Removed translation label
oro.integration.progress
- Updated translation label
oro.integration.sync_error
- Updated translation label
oro.integration.sync_error_integration_deactivated
- Class
MenuUpdateBuilder
[?]:- abstract service
oro_navigation.menu_update.builder.abstract
was removed, use instead classMenuUpdateBuilder
- abstract service
- Class
ReindexDemoDataListener
[?] was removed. Logic was moved toReindexDemoDataFixturesListener
[?]. Serviceoro_search.event_listener.reindex_demo_data
was replaced withoro_search.migration.demo_data_fixtures_listener.reindex
.
- Class
OwnershipConditionDataBuilder
[?]- removed deprecated method
fillOrganizationBusinessUnitIds
- removed deprecated method
fillOrganizationUserIds
- removed deprecated method
- Removed DI container parameter
oro_security.owner.tree.class
- Removed DI container parameter
oro_security.owner.decision_maker.abstract.class
- Removed service
oro_security.owner.tree
- Removed service
oro_security.owner.decision_maker.abstract
- Removed service
oro_security.link.ownership_tree_provider
- Class
AbstractMetadataProvider
[?] was removed. The logic was moved toAbstractOwnershipMetadataProvider
- changed the constructor signature: old signature was
__construct(array $owningEntityNames)
, new signature is__construct(ConfigManager $configManager)
- removed property
localCache
- removed property
owningEntityNames
- removed method
setContainer
- removed method
getContainer
- removed method
getConfigProvider
- removed method
getEntityClassResolver
- removed method
setAccessLevelClasses
- changed the constructor signature: old signature was
- Class
ChainMetadataProvider
[?] was removed. Logic was moved toChainOwnershipMetadataProvider
- Removed
--applicable-suites
parameter from behat. Now every bundle should provide only features that are applicable to any application that includes that bundle.
- Removed service
oro_translation.distribution.package_manager.link
- Removed service container parameters:
oro_workflow.configuration.config.workflow_sole.class
oro_workflow.configuration.config.workflow_list.class
oro_workflow.configuration.handler.step.class
oro_workflow.configuration.handler.attribute.class
oro_workflow.configuration.handler.transition.class
oro_workflow.configuration.handler.workflow.class
oro_workflow.configuration.config.process_definition_sole.class
oro_workflow.configuration.config.process_definition_list.class
oro_workflow.configuration.config.process_trigger_sole.class
oro_workflow.configuration.config.process_trigger_list.class
oro_workflow.configuration.provider.workflow_config.class
oro_workflow.configuration.provider.process_config.class
oro_workflow.configuration.builder.workflow_definition.class
oro_workflow.configuration.builder.workflow_definition.handle.class
oro_workflow.configuration.builder.process_configuration.class
- Added the
form_event_subscriber
option toResources/config/oro/api.yml
. It can be used to add an event subscriber(s) to the form of such actions ascreate
,update
,add_relationship
,update_relationship
anddelete_relationship
. See/src/Oro/Bundle/ApiBundle/Resources/doc/configuration.md
for more information.
- Added processor tag
oro_workflow.processor
andoro_workflow.processor_bag
service to collect processors. - Class
WorkflowAwareCache
[?] added:- purpose: to check whether an entity has been involved as some workflow related entity in cached manner to avoid DB calls
- methods:
hasRelatedActiveWorkflows($entity)
hasRelatedWorkflows($entity)
- invalidation of cache occurs on workflow changes events:
oro.workflow.after_update
oro.workflow.after_create
oro.workflow.after_delete
oro.workflow.activated
oro.workflow.deactivated
- Created action
@get_available_workflow_by_record_group
classGetAvailableWorkflowByRecordGroup
[?] - Added
variable_definitions
to workflow definition - Added new
CONFIGURE
permission for workflows
- Static class
FormUtil
[?] was replaced withFormHelper
[?] which is available as a serviceoro_api.form_helper
- Changed implementation of
CompleteDefinition
[?] processor. All logic was moved to the following classes:
- template
Resources/views/Form/autoresponseFields.html.twig
was removed as it contained possibility to add a collection item after an arbitrary item, which is unnecessary with new form - The following templates were changed:
Resources/views/AutoResponseRule/dialog/update.html.twig
Resources/views/Configuration/Mailbox/update.html.twig
EmailBundle/Resources/views/Form/fields.html.twig
- Class
AutoResponseRuleController
[?]- action
update
now returns following data:form
,saved
,data
,metadata
- action
- Form types
OroEncodedPlaceholderPasswordType
,OroEncodedPasswordType
acquiredbrowser_autocomplete
option with default value set tofalse
, which means that password autocomplete is off by default.
- Class
CliImportMessageProcessor
[?]- does not implement TopicSubscriberInterface now.
- subscribed topic moved to tag in
mq_processor.yml
. - service
oro_importexport.async.http_import
decoratesoro_importexport.async.import
- Class
HttpImportMessageProcessor
[?]- does not implement TopicSubscriberInterface now.
- subscribed topic moved to tag in
mq_processor.yml
. - service
oro_importexport.async.cli_import
decoratesoro_importexport.async.import
- Class
Oro/Bundle/SegmentBundle/Entity/Manager/StaticSegmentManager
:- method
run
now also accepts a dynamic segment
- method
- Class
Oro/Bundle/SegmentBundle/Entity/Manager/StaticSegmentManager
methodbindParameters
is deprecated and will be removed.
- The
ButtonListener
[?] class was removed. Logic was transferred toDatagridActionButtonProvider
[?] class. - Service
oro_action.datagrid.event_listener.button
was removed and neworo_action.datagrid.action.button_provider
added with tagoro_datagrid.extension.action.provider
- Removed event
oro_datagrid.datagrid.extension.action.configure-actions.before
, now it is a call ofDatagridActionProviderInterface::hasActions
[?] of registered through aoro_datagrid.extension.action.provider
tag services.
- Class
AutoResponseRuleType
[?] form fieldconditions
was removed. Use fielddefinition
instead. - The
AutoResponseRule::$conditions
[?] property was removed. Use methods related todefinition
property instead.
- Message topics
oro.importexport.cli_import
,oro.importexport.import_http_validation
,oro.importexport.import_http
with the constants were removed.
- The option
--force
was removed fromoro:install
cli command.
- Service
jms_serializer.link
was removed.
- Class
TransitionCustomFormHandler
[?] and service@oro_workflow.handler.transition.form.page_form
removed (seeCustomFormProcessor
[?]) - Class
TransitionFormHandler
[?] and service@oro_workflow.handler.transition.form
removed see replacements: - Class
TransitionHelper
[?] and service@oro_workflow.handler.transition_helper
removed (seeFormSubmitTemplateResponseProcessor
[?]) - Class
StartTransitionHandler
[?] and service@oro_workflow.handler.start_transition_handler
removed (seeStartHandleProcessor
[?]) - Class
TransitionHandler
[?] and service@oro_workflow.handler.transition_handler
removed (seeTransitionHandleProcessor
[?]) - Class
TransitionWidgetHelper
[?]:- Constant
TransitionWidgetHelper::DEFAULT_TRANSITION_TEMPLATE
[?] moved intoDefaultFormTemplateResponseProcessor::DEFAULT_TRANSITION_TEMPLATE
[?] - Constant
TransitionWidgetHelper::DEFAULT_TRANSITION_CUSTOM_FORM_TEMPLATE
[?] moved intoCustomFormTemplateResponseProcessor::DEFAULT_TRANSITION_CUSTOM_FORM_TEMPLATE
[?]
- Constant
- Class
WorkflowReplacementSelectType
[?] was removed. Logic was moved toWorkflowReplacementType
[?]
- Fixed handling of
property_path
option fromapi.yml
for cases when the property path contains several fields, e.g.customerAssociation.account
- Added Class
Oro\Component\Action\Model\DoctrineTypeMappingExtension
. That can be used as base for services definitions
- Added new action with alias
resolve_destination_page
and classResolveDestinationPage
[?] - Added new tag
oro.action.extension.doctrine_type_mapping
to collect custom doctrine type mappings used to resolve types for serialization atAttributeGuesser
[?]
- Added
BufferedIdentityQueryResultIterator
[?] that allows to iterate through the changing dataset
- Added class `Oro\Bundle\EntityBundle\ORM\DiscriminatorMapListener' that should be used for entities with single table inheritance. Example:
oro_acme.my_entity.discriminator_map_listener:
class: 'Oro\Bundle\EntityBundle\ORM\DiscriminatorMapListener'
public: false
calls:
- [ addClass, ['oro_acme_entity', '%oro_acme.entity.acme_entity.class%'] ]
tags:
- { name: doctrine.event_listener, event: loadClassMetadata }
- Class
UpdateHandlerFacade
[?] added as a replacement of standardUpdateHandler
[?]. So please consider to use it when for a new entity management development. - Interface
FormHandlerInterface
[?] added for standard form handlers. - Class
FormHandler
[?] added (service 'oro_form.form.handler.default') as default form processing mechanism. - Tag
oro_form.form.handler
added to register custom form handlers under itsalias
. - Class
CallbackFormHandler
[?] added as interface compatibility helper for callable. - Interface
FormTemplateDataProviderInterface
[?] added for common update template data population. - Class
FromTemplateDataProvider
[?] (serviceoro_form.provider.from_template_data.default
) as default update template data provider. - Tag
oro_form.form_template_data_provider
added to register custom update template data providers. - Class
FormTemplateDataProviderRegistry
[?] added to collect tagged withoro_form.form_template_data_provider
services. - Class
CallbackFormTemplateDataProvider
[?] added as interface compatibility helper for callable.
- Class
FileManager
[?] and its serviceoro_importexport.file.file_manager
were added. We should use it instead of theFileSystemOperator
[?] - Command
oro:cron:import-clean-up-storage
(classCleanupStorageCommand
[?]) was added.
- Added alias
layout
fororo_layout.layout_manager
service to make it more convenient to access it from container
- Added Configurable Permission
default
for View and Edit pages of User Role (see configurable-permissions.md)
- The service
oro_action.twig.extension.operation
was marked asprivate
- The service
oro_address.twig.extension.phone
was marked asprivate
- The service
oro_assetic.twig.extension
was marked asprivate
- The service
oro_attachment.twig.file_extension
was marked asprivate
- Class
FileManager
[?] methodwriteStreamToStorage
was changed topublic
- The service
oro_config.twig.config_extension
was marked asprivate
- The service
oro_currency.twig.currency
was marked asprivate
- The service
oro_dashboard.twig.extension
was marked asprivate
- Class
GridController
[?] renamed methodfilterMetadata
tofilterMetadataAction
- Class
ExportHandler
[?] (serviceoro_datagrid.handler
) changed its service calls: it doesn't callsetRouter
andsetConfigManager
any more but callssetFileManager
now. - Topic
oro.datagrid.export
doesn't start datagrid export any more. Useoro.datagrid.pre_export
topic instead. - The service
oro_datagrid.twig.datagrid
was marked asprivate
- Class
Oro\Component\DependencyInjection\ServiceLinkRegistry
together withOro\Component\DependencyInjection\ServiceLinkRegistryAwareInterface
for injection awareness. Can be used to provide injection of a collection of services that are registered in system, but there no need to instantiate all of them on every runtime. The registry has@service_container
dependency (Symfony\Component\DependencyInjection\ContainerInterface
) and usesOro\Component\DependencyInjection\ServiceLink
instances internally. It can register public services byServiceLinkRegistry::add
withservice_id
andalias
. Later service can be resolved from registry by its alias on demand (method::get($alias)
). - Class
Oro\Component\DependencyInjection\Compiler\TaggedServiceLinkRegistryCompilerPass
to easily setup a tag by which services will be gathered intoOro\Component\DependencyInjection\ServiceLinkRegistry
and then injected to provided service (usually that implementsOro\Component\DependencyInjection\ServiceLinkRegistryAwareInterface
).
- Class
AssociationManager
[?] changed the return type ofgetOwnerIterator
method fromBufferedQueryResultIterator
to\Iterator
- The service
oro_email.twig.extension.email
was marked asprivate
- The service
oro_embedded_form.back_link.twig.extension
was marked asprivate
- The service
oro_entity.twig.extension.entity
was marked asprivate
- Class
ConfigCache
[?] the implementation was changed significantly, by performance reasons. The most ofprotected
methods were removed or marked asprivate
- The service
oro_entity_config.twig.extension.config
was marked asprivate
- The service
oro_entity_config.twig.extension.dynamic_fields_attribute_decorator
was marked asprivate
- Class
ExtendExtension
[?]- calls to
addManyToManyRelation
,addManyToOneRelation
methods now create unidirectional relations. To create bidirectional relation you MUST call*InverseRelation
method respectively - call to
addOneToManyRelation
creates bidirectional relation according to Doctrine documentation - throw exception when trying to use not allowed option while creating relation in migration
- calls to
- To be able to create bidirectional relation between entities and use "Reuse existing relation" functionality on UI you MUST select "bidirectional" field while creating relation
- The service
oro_entity_extend.twig.extension.dynamic_fields
was marked asprivate
- The service
oro_entity_extend.twig.extension.enum
was marked asprivate
- The service
oro_entity_merge.twig.extension
was marked asprivate
- The service
oro_entity_pagination.twig_extension.entity_pagination
was marked asprivate
- The service
oro_featuretoggle.twig.feature_extension
was marked asprivate
- The service
oro_form.twig.form_extension
was marked asprivate
- The service
oro_help.twig.extension
was marked asprivate
- Class
ExportMessageProcessor
[?] - Class
AbstractImportHandler
[?] (serviceoro_importexport.handler.import.abstract
) changed its service calls: it doesn't callsetRouter
andsetConfigManager
any more but callssetReaderChain
now. - Command
oro:import:csv
(classImportCommand
[?]) was renamed tooro:import:file
- Class
ImportExportJobSummaryResultService
[?] was renamed toImportExportResultSummarizer
. It will be moved after add supporting templates in notification process. - Route
oro_importexport_import_error_log
with path/import_export/import-error/{jobId}.log
was renamed tooro_importexport_job_error_log
with path/import_export/job-error-log/{jobId}.log
- The service
oro_integration.twig.integration
was marked asprivate
- Changed default value option name for
page_title
block type, fromtext
todefaultValue
- The following services were marked as
private
:oro_locale.twig.date_format
oro_locale.twig.locale
oro_locale.twig.calendar
oro_locale.twig.address
oro_locale.twig.number
oro_locale.twig.localization
oro_locale.twig.date_time_organization
- Class
LocalizedFallbackValue
[?] will become not extended in 2.3 release
- Unify percentage value for
Job::$jobProgress
. Now 100% is stored as 1 instead of 100.
- The service
oro_message_queue.job.calculate_root_job_status_service
was renamed tooro_message_queue.job.root_job_status_calculator
and marked asprivate
- The service
oro_message_queue.job.calculate_root_job_progress_service
was renamed tooro_message_queue.job.root_job_progress_calculator
and marked asprivate
- The service
oro_migration.twig.schema_dumper
was marked asprivate
- The following services were marked as
private
:oro_menu.twig.extension
oro_navigation.title_service.twig.extension
- The service
oro_platform.twig.platform_extension
was marked asprivate
- The service
oro_reminder.twig.extension
was marked asprivate
- The service
oro_requirejs.twig.requirejs_extension
was marked asprivate
- Class
ScopeManager
[?]:- changed the return type of
findBy
method fromBufferedQueryResultIterator
toBufferedQueryResultIteratorInterface
- changed the return type of
findRelatedScopes
method fromBufferedQueryResultIterator
toBufferedQueryResultIteratorInterface
- changed the return type of
entityManager
instead ofem
should be used inBaseDriver
childrenOrmIndexer
should be decoupled fromDbalStorer
dependency- The service
oro_search.twig.search_extension
was marked asprivate
- The
oro:search:reindex
command now works synchronously by default. Use the--scheduled
parameter if you need the old, async behaviour
- Service overriding in compiler pass was replaced by service decoration for next services:
sensio_framework_extra.converter.doctrine.orm
security.acl.dbal.provider
security.acl.cache.doctrine
security.acl.voter.basic_permissions
- The service
oro_security.twig.security_extension
was marked asprivate
- The service
oro_segment.twig.extension.segment
was marked asprivate
- The service
oro_sidebar.twig.extension
was marked asprivate
- The service
oro_wamp.twig.sync_extension
was marked asprivate
- The service
oro_tag.twig.tag.extension
was marked asprivate
- The service
oro_theme.twig.extension
was marked asprivate
- The service
oro_translation.twig.translation.extension
was marked asprivate
- Added
array $filtersType = []
parameter to thegenerate
method, that receives an array of filter types to be applies on the route in order to support filters such ascontains
when generating routes - Class
AddLanguageType
[?]- Changed parent from type from
locale
tooro_choice
- Changed parent from type from
- Updated service definition for
oro_translation.extension.transtation_packages_provider
changed publicity tofalse
- The following services were marked as
private
:oro_ui.twig.extension.formatter
oro_ui.twig.tab_extension
oro_ui.twig.html_tag
oro_ui.twig.placeholder_extension
oro_ui.twig.ui_extension
- The service
oro_user.twig.user_extension
was marked asprivate
- Class
StatusController
[?]- renamed method
setCurrentStatus
tosetCurrentStatusAction
- renamed method
clearCurrentStatus
toclearCurrentStatusAction
- renamed method
- The service
oro_windows.twig.extension
was marked asprivate
- The service
oro_workflow.twig.extension.workflow
was marked asprivate
RouteExists
[?] deprecated because of:- work with
RouteCollection
is performance consuming - it was used to check bundle presence, which could be done with
service_exists
- work with
- Interface
CronCommandInterface
[?]- deprecated method
isActive
- deprecated method
- The service
oro_email.link.autoresponserule_manager
was marked as deprecated
- The service
oro_entity_config.link.config_manager
was marked as deprecated
- Class
ExtendExtension
[?]- deprecated
addOneToManyInverseRelation
- deprecated
- Class
UpdateHandler
[?]:- marked as deprecated, use
UpdateHandlerFacade
[?] (serviceoro_form.update_handler
) instead
- marked as deprecated, use
- Class
ExtendLocalizedFallbackValue
[?]- deprecated and will be removed in 2.3 release
DbalStorer
is deprecated. If you need its functionality, please compose your class withDBALPersistenceDriverTrait
- Deprecated services and classes:
oro_search.search.engine.storer
DbalStorer
[?]
- Interface
EngineV2Interface
[?] marked as deprecated - please, useEngineInterface
[?] instead PdoMysql
[?]getWords
method is deprecated. All non alphanumeric chars are removed inBaseDriver
[?]filterTextFieldValue
from fulltext search for MySQL and PgSQL
- The parameter
oro_address.twig.extension.phone.class
was removed from DIC - The service
oro_address.provider.phone.link
was removed
- The parameter
oro_assetic.twig_extension.class
was removed from DIC
- The parameter
oro_attachment.twig.file_extension.class
was removed from DIC
- The parameter
oro_config.twig_extension.class
was removed from DIC
- The parameter
oro_currency.twig.currency.class
was removed from DIC
- The service
oro_dashboard.widget_config_value.date_range.converter.link
was removed
- Class
GroupConcat
[?] was removed. UseGroupConcat
from packageoro/doctrine-extensions
instead.
Oro/Bundle/EmailBundle/Migrations/Data/ORM/EnableEmailFeature
removed, feature enabled by default- The parameter
oro_email.twig.extension.email.class
was removed from DIC
- The parameter
oro_embedded_form.back_link.twig.extension.class
was removed from DIC
- The parameter
oro_entity.twig.extension.entity.class
was removed from DIC - The service
oro_entity.fallback.resolver.entity_fallback_resolver.link
was removed
- The parameter
oro_entity_config.twig.extension.config.class
was removed from DIC
- The parameter
oro_entity_extend.twig.extension.dynamic_fields.class
was removed from DIC - The parameter
oro_entity_extend.twig.extension.enum.class
was removed from DIC
- The parameter
oro_entity_merge.twig.extension.class
was removed from DIC
- The parameter
oro_entity_pagination.twig_extension.entity_pagination.class
was removed from DIC
- The parameter
oro_form.twig.form.class
was removed from DIC - The parameter
oro_form.twig.js_validation_extension.class
was removed from DIC - The service
oro_form.twig.js_validation_extension
was removed from DIC - Class
JsValidationExtension
[?] was removed. Its functionality was moved toFormExtension
[?]
- The parameter
oro_help.twig.extension.class
was removed from DIC
- Class
AbstractPreparingHttpImportMessageProcessor
[?] and its serviceoro_importexport.async.abstract_preparing_http_import
were removed. You can usePreHttpImportMessageProcessor
[?] andHttpImportMessageProcessor
[?]. - Class
PreparingHttpImportMessageProcessor
[?] and its serviceoro_importexport.async.preparing_http_import
were removed. You can usePreHttpImportMessageProcessor
[?] andHttpImportMessageProcessor
[?]. - Class
PreparingHttpImportValidationMessageProcessor
[?] and its serviceoro_importexport.async.preparing_http_import_validation
were removed. You can usePreHttpImportMessageProcessor
[?] andHttpImportMessageProcessor
[?]. - Class
AbstractChunkImportMessageProcessor
[?] and its serviceoro_importexport.async.abstract_chunk_http_import
were removed. You can usePreHttpImportMessageProcessor
[?] andHttpImportMessageProcessor
[?]. - Class
ChunkHttpImportMessageProcessor
[?] and its serviceoro_importexport.async.chunck_http_import
were removed. You can usePreHttpImportMessageProcessor
[?] andHttpImportMessageProcessor
[?]. - Class
ChunkHttpImportValidationMessageProcessor
[?] and its serviceoro_importexport.async.chunck_http_import_validation
were removed. You can usePreHttpImportMessageProcessor
[?] andHttpImportMessageProcessor
[?]. - Class
CliImportValidationMessageProcessor
[?] and its serviceoro_importexport.async.cli_import_validation
were removed. You can usePreCliImportMessageProcessor
[?] andCliImportMessageProcessor
[?]. - Class
SplitterCsvFiler
[?] and its serviceoro_importexport.splitter.csv
were removed. You can useBatchFileManager
[?] instead.
- The parameter
oro_installer.listener.request.class
was removed from DIC
- The parameter
oro_integration.twig.integration.class
was removed from DIC
- Removed the following parameters from the DI container:
oro_layout.layout_factory_builder.class
oro_layout.twig.extension.layout.class
oro_layout.twig.renderer.class
oro_layout.twig.renderer.engine.class
oro_layout.twig.layout_renderer.class
oro_layout.twig.form.engine.class
- The service
oro_locale.twig.name
was removed - The service
oro_translation.event_listener.language_change
was removed - Removed the following parameters from DIC:
oro_locale.twig.date_format.class
oro_locale.twig.locale.class
oro_locale.twig.calendar.class
oro_locale.twig.date_time.class
oro_locale.twig.name.class
oro_locale.twig.address.class
oro_locale.twig.number.class
- Class
Oro\Component\MessageQueue\Job\CalculateRootJobStatusService
was removed. Logic was transferred toOro\Component\MessageQueue\Job\RootJobStatusCalculator
- The parameter
oro_migration.twig.schema_dumper.class
was removed from DIC
- Removed the following parameters from DIC:
oro_menu.twig.extension.class
oro_navigation.event.master_request_route_listener.class
oro_navigation.title_service.twig.extension.class
oro_navigation.title_service.event.request.listener.class
oro_navigation.twig_hash_nav_extension.class
- Removed the following parameters from DIC:
oro_organization.twig.get_owner.class
oro_organization.twig.business_units.class
- The following services were removed:
oro_organization.twig.get_owner
oro_organization.twig.business_units
- The parameter
oro_platform.twig.platform_extension.class
was removed from DIC
- The parameter
oro_reminder.twig.extension.class
was removed from DIC
- The parameter
oro_search.twig_extension.class
was removed from DIC
- Next container parameters were removed:
oro_security.acl.voter.class
oro_security.twig.security_extension.class
oro_security.twig.security_organization_extension
oro_security.twig.acl.permission_extension.class
oro_security.listener.context_listener.class
oro_security.listener.console_context_listener.class
- The service
oro_security.twig.security_organization_extension
was removed - The service
oro_security.twig.acl.permission_extension
was removed - Class
PermissionExtension
[?] was removed - Class
OroSecurityOrganizationExtension
[?] was removed
- The parameter
oro_segment.twig.extension.segment.class
was removed from DIC
- The parameter
oro_sidebar.twig.extension.class
was removed from DIC - The parameter
oro_sidebar.request.handler.class
was removed from DIC
- The parameter
oro_wamp.twig.class
was removed from DIC - The service
oro_sync.twig.content.tags_extension
was removed
- The parameter
oro_tag.twig.tag.extension.class
was removed from DIC
@dbIsolation
annotation removed, applied as default behavior@dbReindex
annotation removed, useSearchExtensionTrait::clearIndexTextTable
[?]
- The parameter
oro_theme.twig.extension.class
was removed from DIC
- Removed the following parameters from DIC:
oro_ui.twig.sort_by.class
oro_ui.twig.ceil.class
oro_ui.twig.extension.class
oro_ui.twig.mobile.class
oro_ui.twig.widget.class
oro_ui.twig.date.class
oro_ui.twig.regex.class
oro_ui.twig.skype_button.class
oro_ui.twig.form.class
oro_ui.twig.formatter.class
oro_ui.twig.placeholder.class
oro_ui.twig.tab.class
oro_ui.twig.content.class
oro_ui.twig.url.class
oro_ui.twig.js_template.class
oro_ui.twig.merge_recursive.class
oro_ui.twig.block.class
oro_ui.twig.html_tag.class
oro_ui.twig.extension.formatter.class
oro_ui.view.listener.class
oro_ui.view.content_provider.listener.class
- Removed the following services:
oro_ui.twig.sort_by_extension
oro_ui.twig.ceil_extension
oro_ui.twig.mobile_extension
oro_ui.twig.form_extension
oro_ui.twig.view_extension
oro_ui.twig.formatter_extension
oro_ui.twig.widget_extension
oro_ui.twig.date_extension
oro_ui.twig.regex_extension
oro_ui.twig.skype_button_extension
oro_ui.twig.content_extension
oro_ui.twig.url_extension
oro_ui.twig.js_template
oro_ui.twig.merge_recursive
oro_ui.twig.block
- The parameter
oro_user.twig.user_extension.class
was removed from DIC
- The parameter
oro_windows.twig.extension.class
was removed from DIC
- Fixed an issue with invalid execution order of processors. The issue was that processors from different groups are intersected. During the fix the calculation of internal priorities of processors was changed, this may affect existing configuration of processors in case if you have common (not bound to any action) processors and ungrouped processors which should work with regular grouped processors.
The previous priority rules:
Processor type Processor priority Group priority initial common processors from -255 to 255 initial ungrouped processors from -255 to 255 grouped processors from -255 to 255 from -254 to 252 final ungrouped processors from -65535 to -65280 final common processors from min int to -65536 The new priority rules: Processor type Processor priority Group priority ---------------- -------------------- ---------------- initial common processors greater than or equals to 0 initial ungrouped processors greater than or equals to 0 grouped processors from -255 to 255 from -255 to 255 final ungrouped processors less than 0 final common processors less than 0 So, the new rules means that: * common and ungrouped processors with the priority greater than or equals to 0 will be executed before grouped processors * common and ungrouped processors with the priority less than 0 will be executed after grouped processors * now there are no any magic numbers for priorities of any processors
- Return value types in
SearchQueryInterface
[?] andAbstractSearchQuery
[?] were fixed to support fluent interfaceOrm
[?]setDrivers
method and$drivers
and injected directly toSearchIndexRepository
[?]OrmIndexer
[?]setDrivers
method and$drivers
and injected directly toSearchIndexRepository
[?]
This changelog references the relevant changes (new features, changes and bugs) done in 2.0 versions.
- Changed minimum required php version to 5.6
- PhpUnit 5.7 support
- Extend fields default mode is
ConfigModel::MODE_READONLY
[?] - Added support of PHP 7.1
This changelog references the relevant changes (new features, changes and bugs) done in 1.10.0 versions.
- The application has been upgraded to Symfony 2.8 (Symfony 2.8.10 doesn't supported because of Symfony issue)
- Added support php 7
- Changed minimum required php version to 5.5.9
This changelog references the relevant changes (new features, changes and bugs) done in 1.9.0 versions.
- 1.9.0 (2016-02-15)
- Inline editing in grids
- Grid column management
- New UX for Tags
- Automated REST API for GET requests
- Performance improvements
- Apply range filters for numerical fields in grids
- Manage field tooltips from the UI
- Override calendar-view.js in customizations
- Profiler of duplicated queries
- Importing layout updates
This changelog references the relevant changes (new features, changes and bugs) done in 1.8.0 versions.
- 1.8.0 (2015-08-26)
- Visual workflow configurator
- New and extended APIs to work with emails
- Segmentation based on Data audit
- Improvements to search
- Improved filtering on option set attributes, allowing for multiple selections
- The application has been upgraded to Symfony 2.7 and migrated to Doctrine 2.5
- Select2 component has been improved to automatically initializes select2 widget
- Documentation for the new Oro Layout component has been added with examples of use
This changelog references the relevant changes (new features, changes and bugs) done in 1.7.0 versions.
- 1.7.0 (2015-04-28)
- New page layouts and layout themes
- Added Google single sign-on
- Added Change or reset users' passwords
- Added Grid views
- Dashboard widget configuration
- Email auto-response in workflow definition
This changelog references the relevant changes (new features, changes and bugs) done in 1.6.0 versions.
- 1.6.0 (2015-01-19)
- Comments to activities. With this feature, the users will be able to add comments to various record activities, such as calls, notes, calendar events, tasks, and so on, making it possible to leave permanent remarks to particular activities they find important, and even engage in conversations that might come in handy later. Comments are added to every activity record separately, in a linear thread. In addition to text they might contain a file attachment (1 file/image per comment). Comments may be enabled or disabled for any activity in Entity Management. The ability to add, edit, delete, and view others’ comments is subject to user’s ACL configuration.
- WYSIWYG rich text editor for emails and notes. This feature allows users to create rich text emails and notes with the built-in WYSIWYG text editor. It allows to mark text as bold, italic, and underlined; change text color and background; create bullet and numbered lists; insert hyperlinks and chunks of source code. Rich text editor may be turned off in System configuration—in this case, editor will no longer be available and all previously created rich text pieces will be stripped of any formatting to plain text.
This changelog references the relevant changes (new features, changes and bugs) done in 1.5.0 versions.
- 1.5.0 (2014-12-18)
- Invitations to calendar events. It is now possible to invite other Oro users to events, send them email notifications about this invitation and receive feedback about their responses or lack thereof. To invite a user to your event, simply open its edit form and choose guests in a respectively named selector control. After you save the event with invitees, they will receive email notifications about the invitation with a link to their copy of the event in OroCRM. On the view page of that event they will be able to respond to an invitation with three options: Attend, Tentatively attend, and Not attend. Response status (including no response yet) will be displayed on the event tile in the calendar view, and next to the guest's name in the event view. An invitee will be able to change his response after the initial choice, i.e. choose to not attend a previously agreed event. For every response to an invitation, or a change in plans, you (i.e. the organizer of the event) will receive an email notification.
- System calendars. This feature allows developers to add so-called System calendars to OroPlatform. Use cases for such calendars include company-wide holiday calendar; organization-wide calendar of conferences and conventions, and so on. (Note that organization calendars will only be available in Enterprise Edition 1.7.0). These calendars and their events will be automatically added to Calendar views of all users in the entire system. Events of these calendars can be managed on their view forms that are available under System > System Calendars. The permission to add or modify events might be assigned to as many people as needed—e.g. the HR and the office manager.
- Task calendar. Task calendar is a special kind of system calendar that displays tasks assigned to the user on the calendar view in addition to calendar events. For now, there is no way to add tasks via the calendar view, but it is possible to edit or delete existing tasks. It is not possible to view other users' task calendars either—only the personal task calendar is available. The calendar view also features a button that leads to the grid of all tasks, similarly to the existing Events button.
- Color coding for calendars and calendar events. The user now may change the color of the calendar from the default one in the calendar actions popup menu. Similarly, the user can change the color of the individual event in its Edit dialogue. A palette of standard colors is offered in both cases, with the option to select a custom color with the color wheel. Standard palettes for calendars and events may be configured in the system configuration under Display settings > Calendar settings.
- Other minor changes to calendar view. It is now possible to turn calendars on and off without removing them from the list by clicking on the colored square or via the popup menu. Click on the event tile opens its View Event form, not Edit.
- Calls, Tasks, and Calendar events as entity activities. This is an expansion to the entity activity feature that was first released with 1.3.0 where we introduced the concept of entity activity to the platform and converted emailing to the activity mechanism. Now we are adding three more ubiquitous user actions to this list: logging calls, creating tasks, and scheduling calendar events. In order to better accommodate the expanding lot of activities we also have customized the UI for them. Previously, every action/activity had its own button regardless of the number of activities available, so if the admin has enabled a lot of activities, users could easily get confused with a long row of buttons, especially on a low resolution screen. Now all activities and non-activity based actions other than Edit and Delete are conveniently grouped into a single More Actions dropdown button.
- Record Activities Widget. The Record Activities Widget replaces the Record Activity block, where activities were listed by their type in separate tabs. Instead of tabs, the widget puts all record activities—emails, calls, tasks, calendar events, etc—in a single paginated list. The user is able to filter the list by activity type and by date of activity. It is possible to configure the the list to be sorted either by creation date or by last update date.
- Custom fields without schema update. It is now possible to add custom fields to entities and immediately use them without schema update. This ability comes with drawbacks: these "serialized" fields can only store textual or numeric data—they cannot be option sets, relations, or files/images; nor they are available in reports or segments. But these fields will be displayed on entity view/add forms, and may be added to grid and export/import profile if necessary. To create such fields, click Create field button on the entity view page in Entity management, and then choose "Serialized field" in Storage type selector. To create regular field, choose "Table column."
- Entity records pagination. This feature allows the user to "remember" a set of entity records that existed on the grid (i.e. with filters applied) when he moves to the view page of any record, and then quickly navigate through these records with a new pagination control that appears in top right corner of the page. Pagination only works when the user comes to a view page from the main entity grid; in any other case (e.g. search, direct link, grid on another page, segment) the pagination control will not be displayed. Pagination is preserved on a pinned page in both control and in breadcrumbs.
This changelog references the relevant changes (new features, changes and bugs) done in 1.4.3 versions.
- 1.4.3 (2014-12-05)
- List of improvements and fixed bugs
- Fixed extended entity is set to "false" after oro:entity-config:update with force
This changelog references the relevant changes (new features, changes and bugs) done in 1.4.2 versions.
- 1.4.2 (2014-12-02)
- List of improvements and fixed bugs
- Implemented form type guessers for custom fields of existing entities
- Added support of cascade option for association in Extend Extension
- Fixed insecure content from websockets when HTTPS used
- Fixed IMAP Sync with date parsing exception
- Magento Integration: Sensitive data displayed in API request logs
- Magento Integration: Memory Issue on Error
- Magento Integration: Duplicated jobs on two way Magento sync
This changelog references the relevant changes (new features, changes and bugs) done in 1.4.1 versions.
- 1.4.1 (2014-11-17)
- List of improvements and fixed bugs
- Refactor extended entity to prevent class name collisions
- Implement form type guessers for custom fields of existing entities
- Use route from config in email address link to avoid potential errors
- Fixed duplicates of entities during magento import
- Error in "oro_multiple_entity" if it's used without "default_element" option
- Lost organization name after upgrade
This changelog references the relevant changes (new features, changes and bugs) done in 1.4.0 versions.
- 1.4.0 (2014-10-15)
- The re-introduction of Channels. We started the implementation of a new vision for the Channels in 1.3 version and now we bring Channels back, although under a new definition. The general idea behind channels may be explained as follows: a channel in OroCRM represents an outside source customer and sales data, where "customer" and "sales" must be understood in the broadest sense possible. Depending on the nature of the outside source, the channel may or may not require a data integration. This new definition leads to multiple noticeable changes across the system.
- Integration management. Albeit the Integrations grid still displays all integrations that exist in the system, you now may create only "non-customer" standalone integrations, such as Zendesk integration. The "customer" integrations, such as Magento integration, may be created only in scope of a channel and cannot exist without it.
- Marketing lists. Marketing lists serve as the basis for marketing activities, such as email campaigns (see below). They represent a target auditory of the activity—that is, people, who will be contacted when the activity takes place. Marketing lists have little value by themselves; they exist in scope of some marketing campaign and its activities. Essentially, marketing list is a segment of entities that contain some contact information, such as email or phone number or physical address. Lists are build based on some rules using Oro filtering tool. Similarly to segments, marketing lists can be static or dynamic; the rules are the same. The user can build marketing lists of contacts, Magento customers, leads, etc. In addition to filtering rules, the user can manually tweak contents of the marketing list by removing items ("subscribers") from it. Removed subscribers will no longer appear in the list even if they fit the conditions. It is possible to move them back in the list, too. Every subscriber can also unsubscribe from the list. In this case, he will remain in the list, but will no longer receive email campaigns that are sent to this list. Note that subscription status is managed on per-list basis; the same contact might be subscribed to one list and unsubscribed from another.
- Email campaigns. Email campaign is a first example of marketing activity implemented in OroCRM. The big picture is following: Every marketing campaign might contain multiple marketing activities, e.g. an email newsletter, a context ad campaign, a targeted phone advertisement. All these activities serve the common goal of the "big" marketing campaign. In its current implementation, email campaign is a one-time dispatch of an email to a list of subscribers. Hence, the campaign consists of three basic parts: Recipients—represented by a Marketing list. Email itself—the user may choose a template, or create a campaign email from scratch. Sending rules—for now, only one-time dispatch is available. Email campaign might be tied to a marketing campaign, but it might exist on its own as well.
- Improved Email templates. Previously, email templates were used only for email notifications. Now their role is expanded: it is now possible to use templates in email activities to create a new email from the template, and for email campaigns. Support for variables in templates was extended: in addition to "contextual" variables that were related to attributes of the template entity, templates may include "system-wide" variables like current user's first name, or current time, or name of the organization. It is also possible to create a "generic" template that is not related to any entity; in this case it may contain only system variables. New templates are subject to ACL and have owner of user type.
- Other improvements
- Multiple improvements to Web API
- A new implementation of option sets
- Improved grids
- #50 Add the way to filter on empty fields
- #116 Add custom templates to workflow transitions
- #118 Extending countries
- #136 Console command for CSV import/export
- #149 New "link" type for datagrid column format
- #47 Problems with scrolling in iOS 7
- #62 Problems with the Recent Emails widget
- #139 Error 500 after removing unique key of entity
- #158 Update doctrine version to 2.4.4
This changelog references the relevant changes (new features, changes and bugs) done in 1.4.0-RC1 versions.
- 1.4.0-RC1 (2014-09-30)
- The re-introduction of Channels. We started the implementation of a new vision for the Channels in 1.3 version and now we bring Channels back, although under a new definition. The general idea behind channels may be explained as follows: a channel in OroCRM represents an outside source customer and sales data, where "customer" and "sales" must be understood in the broadest sense possible. Depending on the nature of the outside source, the channel may or may not require a data integration. This new definition leads to multiple noticeable changes across the system.
- Integration management. Albeit the Integrations grid still displays all integrations that exist in the system, you now may create only "non-customer" standalone integrations, such as Zendesk integration. The "customer" integrations, such as Magento integration, may be created only in scope of a channel and cannot exist without it.
- Marketing lists. Marketing lists serve as the basis for marketing activities, such as email campaigns (see below). They represent a target auditory of the activity—that is, people, who will be contacted when the activity takes place. Marketing lists have little value by themselves; they exist in scope of some marketing campaign and its activities. Essentially, marketing list is a segment of entities that contain some contact information, such as email or phone number or physical address. Lists are build based on some rules using Oro filtering tool. Similarly to segments, marketing lists can be static or dynamic; the rules are the same. The user can build marketing lists of contacts, Magento customers, leads, etc. In addition to filtering rules, the user can manually tweak contents of the marketing list by removing items ("subscribers") from it. Removed subscribers will no longer appear in the list even if they fit the conditions. It is possible to move them back in the list, too. Every subscriber can also unsubscribe from the list. In this case, he will remain in the list, but will no longer receive email campaigns that are sent to this list. Note that subscription status is managed on per-list basis; the same contact might be subscribed to one list and unsubscribed from another.
- Email campaigns. Email campaign is a first example of marketing activity implemented in OroCRM. The big picture is following: Every marketing campaign might contain multiple marketing activities, e.g. an email newsletter, a context ad campaign, a targeted phone advertisement. All these activities serve the common goal of the "big" marketing campaign. In its current implementation, email campaign is a one-time dispatch of an email to a list of subscribers. Hence, the campaign consists of three basic parts: Recipients—represented by a Marketing list. Email itself—the user may choose a template, or create a campaign email from scratch. Sending rules—for now, only one-time dispatch is available. Email campaign might be tied to a marketing campaign, but it might exist on its own as well.
- Improved Email templates. Previously, email templates were used only for email notifications. Now their role is expanded: it is now possible to use templates in email activities to create a new email from the template, and for email campaigns. Support for variables in templates was extended: in addition to "contextual" variables that were related to attributes of the template entity, templates may include "system-wide" variables like current user's first name, or current time, or name of the organization. It is also possible to create a "generic" template that is not related to any entity; in this case it may contain only system variables. New templates are subject to ACL and have owner of user type.
- Other improvements
- Multiple improvements to Web API
- A new implementation of option sets
- Improved grids
- #50 Add the way to filter on empty fields
- #116 Add custom templates to workflow transitions
- #118 Extending countries
- #136 Console command for CSV import/export
- #149 New "link" type for datagrid column format
- #47 Problems with scrolling in iOS 7
- #62 Problems with the Recent Emails widget
- #139 Error 500 after removing unique key of entity
- #158 Update doctrine version to 2.4.4
This changelog references the relevant changes (new features, changes and bugs) done in 1.3.1 versions.
- 1.3.1 (2014-08-14)
- Minimum PHP version: PHP 5.4.9
- PostgreSQL support
- Fixed issue: Not entire set of entities is exported
- Fixed issue: Page crashes when big value is typed into the pagination control
- Fixed issue: Error 500 on Schema update
- Other minor issues
This changelog references the relevant changes (new features, changes and bugs) done in 1.3.0 versions.
- 1.3.0 (2014-07-23)
- Redesign of the Navigation panel and left-side menu bar
- Website event tracking
- Processes
- New custom field types for entities: File and Image
- New control for record lookup (relations)
- Data import in CSV format
This changelog references the relevant changes (new features, changes and bugs) done in 1.2.0 versions.
- 1.2.0 (2014-05-28)
- Ability to delete Channels
- Workflow view
- Reset of Workflow data
- Line charts in Reports
- Fixed issues with Duplicated emails
- Fixed Issue Use of SQL keywords as extended entity field names
- Fixed Issue Creating one-to-many relationship on custom entity that inverses many-to-one relationship fails
- Fixed Community requests
This changelog references the relevant changes (new features, changes and bugs) done in 1.2.0 RC1 versions.
- 1.2.0 RC1 (2014-05-12)
- Ability to delete Channels
- Workflow view
- Reset of Workflow data
- Fixed issues with Duplicated emails
- Fixed Issue Use of SQL keywords as extended entity field names
- Fixed Issue Creating one-to-many relationship on custom entity that inverses many-to-one relationship fails
This changelog references the relevant changes (new features, changes and bugs) done in 1.1.0 versions.
- 1.1.0 (2014-04-28)
- Dashboard management
- Fixed problem with creation of on-demand segments
- Fixed broken WSSE authentication
- Fixed Incorrectly calculated totals in grids
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.1 versions.
- 1.0.1 (2014-04-18)
- Issue #3979 � Problems with DB server verification on install
- Issue #3916 � Memory consumption is too high on installation
- Issue #3918 � Problems with installation of packages from console
- Issue #3841 � Very slow installation of packages
- Issue #3916 � Installed application is not working correctly because of knp-menu version
- Issue #3839 � Cache regeneration is too slow
- Issue #3525 � Broken filters on Entity Configuration grid
- Issue #3974 � Settings are not saved in sidebar widgets
- Issue #3962 � Workflow window opens with a significant delay
- Issue #2203 � Incorrect timezone processing in Calendar
- Issue #3909 � Multi-selection filters might be too long
- Issue #3899 � Broken link from Opportunity to related Contact Request
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0 versions.
- 1.0.0 (2014-04-01)
- Workflow management UI
- Segmentation
- Reminders
- Package management
- Page & Grand totals for grids
- Proper formatting of Money and Percent values
- Configurable Sidebars
- Notification of content changes in the Pinbar
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-rc3 versions.
- 1.0.0-rc3 (2014-02-25)
- Embedded forms
- CSV export
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-rc2 versions.
- 1.0.0-rc2 (2014-01-30)
- Package management
- Translations management
- FontAwesome web-application icons
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-rc1 versions.
- 1.0.0-rc1 (2013-12-30)
- Table reports creation wizard
- Manageable labels of entities and entity fields
- Record updates notification
- Sidebars widgets
- Mobile Web
- Package Definition and Management
- Themes
- Notifications for owners
- --force option for oro:install
- Remove old Grid bundle
- Basic dashboards
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-beta5 versions.
- 1.0.0-beta5 (2013-12-05)
- ACL management in scope of organization and business unit
- "Option Set" Field Type for Entity Field
- Form validation improvements
- Tabs implementation on entity view pages
- Eliminated registry js-component
- Implemented responsive markup on most pages
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-beta4 versions.
- 1.0.0-beta4 (2013-11-21)
- Grid refactoring
- Form validation improvements
- Make all entities as Extended
- JavaScript Tests
- End support for Internet Explorer 9
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-beta3 versions.
- 1.0.0-beta3 (2013-11-11)
- Upgrade the Symfony framework to version 2.3.6
- Oro Calendar
- Email Communication
- Removed bundle dependencies on application
- One-to-many and many-to-many relations between extended/custom entities
- Localizations and Internationalization of input and output
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-beta2 versions.
- 1.0.0-beta2 (2013-10-28)
- Minimum PHP version: PHP 5.4.4
- Installer enhancements
- Automatic bundles distribution for application
- Routes declaration on Bundles level
- System Help and Tooltips
- RequireJS optimizer utilization
- ACL Caching
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-beta1 versions.
- 1.0.0-beta1 (2013-09-30)
- New ACL implementation
- Emails synchronization via IMAP
- Custom entities and fields in usage
- Managing relations between entities
- Grid views
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-alpha6 versions.
- 1.0.0-alpha6 (2013-09-12)
- Maintenance Mode
- WebSocket messaging between browser and the web server
- Asynchronous Module Definition of JS resources
- Added multiple sorting for a Grid
- System configuration
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-alpha5 versions.
- 1.0.0-alpha5 (2013-08-29)
- Custom entity creation
- Cron Job
- Record ownership
- Grid Improvements
- Filter Improvements
- Email Template Improvements
- Implemented extractor for messages in PHP code
- Removed dependency on SonataAdminBundle
- Added possibility to unpin page using pin icon
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-alpha4 versions.
- 1.0.0-alpha4 (2013-07-31)
- Upgrade Symfony to version 2.3
- Entity and Entity's Field Management
- Multiple Organizations and Business Units
- Transactional Emails
- Email Templates
- Tags Management
- Translations JS files
- Pin tab experience update
- Redesigned Page Header
- Optimized load time of JS resources
This changelog references the relevant changes (new features, changes and bugs) done in 1.0.0-alpha3 versions.
- 1.0.0-alpha3 (2013-06-27)
- Placeholders
- Developer toolbar works with AJAX navigation requests
- Configuring hidden columns in a Grid
- Auto-complete form type
- Added Address Book
- Localized countries and regions
- Enhanced data change log with ability to save changes for collections
- Removed dependency on lib ICU