- 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_prefixandrest_api_patternconfiguration options andoro_api.rest.prefixandoro_api.rest.patternDIC parameters to be able to reconfigure REST API base path.
- Added
oro.cache.abstract.without_memory_cachethat is the same asoro.cache.abstractbut 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\RolePermissionExtensiontrait that can be used in functional tests where you need to change permissions for security roles.
- Added the
addBeforeActionPromisestatic method ofBaseControllerin JS which enables to postpone route action if the required async process is in progress.
- Removed the
loadBeforeActionandaddToReusestatic methods ofBaseControllerin 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.afterevent, 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\SubRequestAclConditionStorageandOro\Bundle\SecurityBundle\ORM\Walker\AclConditionalFactorBuilderclasses because now ACL restrictions applies with Access Rules byOro\Bundle\SecurityBundle\ORM\Walker\AccessRuleWalker. - Removed
Oro\Bundle\SecurityBundle\ORM\Walker\AclHelper::applyAclToCriteriamethod. Please useapplymethod with Doctrine Query or Query builder instead.
- By default processors for
customize_loaded_dataaction are executed only for primary and included entities. Useidentifier_only: truetag attribute if your processor should be executed for relationships.
- All global JS Views and Components are defined in the HTML through data attributes.
Oro\Bundle\SecurityBundle\ORM\Walker\AclHelper::applymethod logic was changed to support Access rules.
- Added
directionoption for fields in theactionssection to be able to specify if the request data and the the response data can contain a field. Possible values areinput-only,output-onlyorbidirectional. Thebidirectionalis 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_insensitiveandvalue_transformeroptions for ComparisonFilter. See how_to.md for more details.
- Removed deprecated routes contain
_formatplaceholder.
- The
oro_api.get_config.add_owner_validatorservice was renamed tooro_organization.api.config.add_owner_validator - The
oro_api.request_type_providerDIC tag was renamed tooro.api.request_type_provider - The
oro_api.routing_options_resolverDIC tag was renamed tooro.api.routing_options_resolver - The
oro_api.api_doc_annotation_handlerDIC 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\CustomizeLoadedDataContextclass - Removed the deprecated
Oro\Bundle\ApiBundle\Model\EntityDescriptorclass
- Removed the deprecated
getDefaultTimeoutandsetDefaultTimeoutmethods from theOro\Bundle\EntityConfigBundle\Tools\CommandExecutorclass
- Removed the
Oro\Bundle\ImportExportBundle\EventListener\ExportJoinListenerclass and the correspondingoro_importexport.event_listener.export_join_listenerservice - The
%oro_importexport.file.split_csv_file.size_of_batch%parameter was removed; use%oro_importexport.import.size_of_batch%instead.
- Removed the deprecated
getDefaultTimeoutandsetDefaultTimeoutmethods from theOro\Bundle\InstallerBundle\CommandExecutorclass
- Removed twig filter
oro_html_tag_trim; useoro_html_escapeinstead. See documentation. - Removed twig filter
oro_html_purify; useoro_html_strip_tagsinstead. See documentation.
- Removed the
oro_workflow.cache.provider.workflow_definitioncache 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_filterwas renamed tooro_html_strip_tags. See documentation.
- The
oro_rest_api_get_user_profileroute was removed; use theoro_rest_api_user_profileroute instead. - The
Oro\Bundle\UserBundle\Api\Routing\UserProfileRestRouteOptionsResolverand theOro\Bundle\UserBundle\Api\ApiDoc\UserProfileRestRouteOptionsResolverroute 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_providertag. - Class should implement
Oro\Bundle\ConfigBundle\Provider\SearchProviderInterfaceinterface.
- Service should be registered as a service with the
- Added the
oro_entity.structure.optionsevent (see documentation) - Added the
Oro\Bundle\EntityBundle\Provider\EntityStructureDataProviderprovider 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::convertNamemethod was renamed toconvertEnumNameToCode, visibility of this method was changed frompublictoprivateand it will throw an exception when theiconvfunction 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_providertag to be able to register the console command global options provider forGlobalOptionsProviderRegistry[?] and it will be used inGlobalOptionsListener[?]. This providers must implementGlobalOptionsProviderInterface[?].
-
The
build_querygroup was removed fromupdateanddeleteactions. From now the updating/deleting entity is loaded byOro\Bundle\ApiBundle\Processor\Shared\LoadEntityprocessor instead ofOro\Bundle\ApiBundle\Processor\Shared\LoadEntityByOrmQueryprocessor. -
The priorities of some groups for the
updateaction 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
deleteaction 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
percentdata 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_arrayoption was changed fromtruetofalse. This was done to allow filter data if a string field contains a comma.
- Parameter
count_hintswill have value ofhintsunless otherwise specified. If other words from now
datagrids:
grid-name:
...
source:
...
hints:
- SOME_QUERY_HINTequivalent
datagrids:
grid-name:
...
source:
...
hints:
- SOME_QUERY_HINT
count_hints:
- SOME_QUERY_HINT- Refactored the
SegmentComponentjs-component to useEntityStructureDataProvider.
- In the
Oro\Bundle\SidebarBundle\Model\WidgetDefinitionRegistryclass, the return type in thegetWidgetDefinitionsandgetWidgetDefinitionsByPlacementmethods were changed fromArrayCollectiontoarray.
- The
loadModulesmethod of the'oroui/js/tools'js-module now returns a promise object. - The default value for the
keepElementproperty of aChaplin.Viewhas changed fromfalsetonullwhen no element is provided, and fromfalsetotruewhen the element is provided in the options.
- Refactored the
WorkflowEditorComponentandWorkflowViewerComponentjs-components to useEntityStructureDataProvider.
- JS util
EntityFieldsUtilis deprecated in favor ofEntityStructureDataProvider.
- The parameter
oro_attachment.listener.file_listener.classwas removed form the service container.
- The parameter
oro_comment.comment_lifecycle_listener.classwas removed form the service container.
- A jQuery widget
oroentity.fieldChoiceis replaced with theFieldChoiceViewBackbone view. - A jQuery widget
oroentity.fieldsLoaderis removed. Please useEntityStructureDataProviderinstead.
- The parameter
oro_imap.listener.user_email_origin.classwas removed form the service container
- A jQuery widget
oroquerydesigner.functionChoiceis replaced with theFunctionChoiceViewBackbone view.
- The parameter
oro_reminder.event_listener.reminder_listener.classwas removed form the service container.
- A jQuery widget
orosegment.segmentChoiceis replaced with theSegmentChoiceViewBackbone view.
- The parameter
oro_sidebar.widget_definition.registry.classwas removed form the service container. - The service
oro_sidebar.request.handlerwas removed.
- The parameter
oro_sso.event_listener.user_email_change_listener.classwas removed form the service container.
- Removed the
loadModulemethods from'oroui/js/tools'js-module. Please useloadModulesinstead.
- The parameter
oro_workflow.listener.process_data_serialize.classwas removed form the service container. - The parameter
oro_workflow.listener.workflow_data_serialize.classwas removed form the service container.
- Added
ActivityConditionViewas substitution for removedoroactivity.activityConditionjQuery widget.
- Added an additional syntax for data filters:
key[operator_name]=value. For exampleGET /api/users?filter[id][neq]=2can be used instead ofGET /api/users?filter[id]!=2. The supported operators areeq,neq,lt,lte,gtandgte. - Added a possibility to specify the documentation_resource option for the same entity in different
Resources/config/oro/api.ymlfiles. 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,moneyandduration - Added a range filter and option
allow_rangethat 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
DataAuditConditionViewas substitution for removedoroauditquerydesigner.dataAuditConditionjQuery widget.
- Added the
Oro\Bundle\EntityConfigBundle\Attribute\Type\AttributeTypeInterfaceinterface that should be implemented in case a new type of arguments was added.
- Added method
onPreCreateDelayedtoOro\Component\MessageQueue\Job\ExtensionInterfaceinterface. - Added Stale Jobs functionality
- Added the
setJobConfigurationProvidermethod toOro\Component\MessageQueue\Job\JobProcessor - Added the new oro.message_queue_job.status.stale state
- Added the new
Oro\Component\MessageQueue\Provider\JobConfigurationProviderInterfaceinterface
- Added the
- Added interface
Oro\Bundle\MessageQueueBundle\Consumption\Extension\ClearerInterface. For details see container_in_consumer.md - Added configuration for Stale Jobs
- Added
ConditionBuilderViewas substitution for removedoroquerydesigner.conditionBuilderjQuery widget. - Added
AbstractConditionViewandFieldConditionViewas substitution for removedoroquerydesigner.fieldConditionjQuery widget. - Added
AggregatedFieldConditionViewas substitution for removedoroauditquerydesigner.aggregatedFieldConditionjQuery widget.
- Added parameters
websocket_frontend_pathandwebsocket_backend_path. Usage
- Class
Oro\Bundle\ApiBundle\Config\EntityDefinitionConfig- method
hasDocumentationResourcewas renamed tohasDocumentationResources - method
getDocumentationResourcewas renamed togetDocumentationResources - method
setDocumentationResourcewas renamed tosetDocumentationResources
- method
- Added a possibility to rename associations. This leads the following backward incompatible changes:
- the data passed to
customize_loaded_dataprocessors 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\ProcessorBagtoOro\Component\ChainProcessor\ProcessorBagConfigBuilder - methods
addGroupandaddProcessorwere removed fromOro\Component\ChainProcessor\ProcessorBag - the schema of data stored in
Oro\Component\ChainProcessor\ProcessorBag::$processorsproperty 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::$processorsproperty 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\LoadProcessorsCompilerPasswas split into two compiler passesOro\Component\ChainProcessor\DependencyInjection\LoadProcessorsCompilerPassandOro\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_typetag.
- Added a possibility to rename associations. This leads the following backward incompatible changes:
- the
Oro\Component\EntitySerializer\EntitySerializerclass was changed a lot. If you have classes extend this class, carefully check them - the data passed to
post_serializehandlers were changed: from now these data contain already renamed fields and associations are not collapsed
- the
- Interface
Oro\Component\MessageQueue\Job\ExtensionInterface- renamed method
onCreateDelayedtoonPostCreateDelayed
- renamed method
- Method
setPersistentServiceswas moved fromOro\Bundle\MessageQueueBundle\Consumption\Extension\ContainerResetExtensiontoOro\Bundle\MessageQueueBundle\Consumption\Extension\ContainerClearer
- Entity
Oro\Bundle\WebsiteSearchBundle\Entity\IndexDecimal:- changed decimal field
value:precisionchanged from10to21.scalechanged from2to6.
- 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
restrictionswas excluded from output results of the method "Get Workflow Definition" (/api/rest/{version}/workflowdefinition/{workflowDefinition}.{_format}).
- Class
Oro/Bundle/SearchBundle/Engine/Orm/DBALPersistenceDriverTraitis deprecated. The functionality was merged intoBaseDriver
- Refactored setup of ActivityCondition for QueryDesigner's ConditionBuilder.
- jQuery widget
oroactivity.activityConditionreplaced withActivityConditionViewBackbone view, removed unused extensions support in its options. - Removed class
Oro\Bundle\ActivityListBundle\EventListener\SegmentWidgetOptionsListener.
- jQuery widget
- jQuery widget
oroauditquerydesigner.dataAuditConditionreplaced withDataAuditConditionViewBackbone view.
- jQuery widget
oroquerydesigner.conditionBuilderreplaced withConditionBuilderViewBackbone view. - jQuery widget
oroquerydesigner.fieldConditionrefactored intoAbstractConditionViewandFieldConditionViewBackbone views. - jQuery widget
oroauditquerydesigner.aggregatedFieldConditionreplaced withAggregatedFieldConditionViewBackbone view.
- Removed service
oro_search.search.engine.storer
- Class
Oro\Bundle\SecurityBundle\Owner\AbstractOwnerTreeProvider- internal cache parameter
$treewas 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.twigOro/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_tagsform option should be used instead. - service
oro_form.type.textareawas removed.
- Added tag
oro.config_cache_warmer.providerto 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_replaceservice. New parameter idoro_security.owner.checkerservice that helps check the owner during import. JobResult[?] have newneedRedeliveryflag.JobExecutor[?] in case of any of catched exception during Job processing is a type ofDoctrine\DBAL\Exception\UniqueConstraintViolationExceptionJobResult will have aneedRedeliveryflag set to true.ImportMessageProcessor[?] is able to catch newOro\Component\MessageQueue\Exception\JobRedeliveryExceptionand it this case is able to requeue a message to process
- Added interface
Oro\Component\MessageQueue\Job\ExtensionInterfacethat 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_NULLSwas 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
handleChangedAddressesin 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. MethodgetHeaderConversionRulespreviously calledinitializemethod to load both conversion rules and backend headers, but now it calls onlyinitializeRules
- Parameter
oro_message_queue.maintance.idle_timewas renamed tooro_message_queue.maintenance.idle_time - Class
Oro\Component\MessageQueue\Consumption\Extension\SignalExtension- the visibility of method
interruptExecutionIfNeededwas changed frompublictoprotected
- 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.utilsany 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_transformeroption 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
getUniqueIdfrom classBaseDriver[?]. Use methodgetJoinAttributesinstead.
- Services
oro_segment.query_converter.segmentandoro_segment.query_converter.segment.linkwere removed.
- Removed the use of js-application build
js/oro.min.jsfrom login page. Usehead_scripttwig placeholder to include custom script on login page.
- Fixed handling of
priorityattribute of the tagoro_message_queue.consumption.extensionto 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_commandwas removed - Service
oro_message_queue.command.consume_messageswas 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.linkwas created to initialize the serviceoro_segment.query.segment_query_converter_factoryinDynamicSegmentQueryBuilder[?].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.linkinstead oforo_segment.query_converter.segment.link.- public method
setSegmentQueryConverterFactoryLink(ServiceLink $segmentQueryConverterFactoryLink)was added.
- public method
-
Definition of service
oro_segment.query.dynamic_segment.query_builderwas 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_summaryparameter.
- 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_loadthat is raised before data fixtures are loaded - Added event
oro_migration.data_fixtures.post_loadthat is raised after data fixtures are loaded
- Added new action
create_noterelated classCreateNoteAction[?]
- Class
ReportCacheCleanerListener[?] was added. It cleans cache of report grid on postUpdate event of Report entity.
- Added provider
oro_workflow.provider.workflow_definitionto manage cached instances ofWorkflowDefinitions. - Added cache provider
oro_workflow.cache.provider.workflow_definitionto hold cached instances ofWorkflowDefinitions.
- Class
EmailExtension[?] methodgetSecurityFacadewas replaces withgetAuthorizationCheckerandgetTokenAccessor - Class
EmailQueryFactory[?] methodprepareQueryrenamed 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-gridemail-griddashboard-recent-emails-inbox-griddashboard-recent-emails-sent-griddashboard-recent-emails-new-gridEmailBundle/Resources/views/Email/Datagrid/Property/contacts.html.twigEmailBundle/Resources/views/Email/Datagrid/Property/date.html.twigEmailBundle/Resources/views/Email/Datagrid/Property/date_long.html.twigEmailBundle/Resources/views/Email/Datagrid/Property/from.html.twigEmailBundle/Resources/views/Email/Datagrid/Property/mailbox.html.twigEmailBundle/Resources/views/Email/Datagrid/Property/recipients.html.twigEmailBundle/Resources/views/Email/Datagrid/Property/subject.html.twig- TWIG macro
wrapTextToTagwas 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,isContentTypewere superseded bygetHeadermethod
- 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
getSecurityFacadewas replaces withgetAuthorizationCheckerandgetTokenAccessor
- method
- Class
TestListenernamespace 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:refreshWorkflowDefinitiongetEntityManagergetEntityRepository
- following protected methods were moved to
- Datagrid filter
WorkflowFilter[?] changed namespace
- Class
EmailRecipientRepository[?] methodgetThreadUniqueRecipientswas marked as deprecated. UseEmailGridResultHelper::addEmailRecipientsinstead - Class
FolderType[?] methodoutcomingTypeswas marked as deprecated. UseoutgoingTypesinstead - Class
EmailExtension[?] methodgetEmailThreadRecipientswas marked as deprecated. UseEmailGridResultHelper::addEmailRecipientsinstead
- Interface
AccessLevelOwnershipDecisionMakerInterface[?]- method
isGlobalLevelEntitywas marked as deprecated, use methodisOrganizationinstead - method
isLocalLevelEntitywas marked as deprecated, use methodisBusinessUnitinstead - method
isBasicLevelEntitywas marked as deprecated, use methodisUserinstead - method
isAssociatedWithGlobalLevelEntitywas marked as deprecated, use methodisAssociatedWithOrganizationinstead - method
isAssociatedWithLocalLevelEntitywas marked as deprecated, use methodisAssociatedWithBusinessUnitinstead - method
isAssociatedWithBasicLevelEntitywas marked as deprecated, use methodisAssociatedWithUserinstead
- method
- Interface
OwnerTreeInterface[?] was renamed toOwnerTreeBuilderInterface- method
addBasicEntitywas marked as deprecated, use methodaddUserinstead - method
addGlobalEntitywas marked as deprecated, use methodaddUserOrganizationinstead - method
addLocalEntityToBasicwas marked as deprecated, use methodaddUserBusinessUnitinstead - method
addDeepEntitywas marked as deprecated, use methodaddBusinessUnitRelationinstead - method
addLocalEntitywas marked as deprecated, use methodaddBusinessUnitinstead
- method
- Interface
OwnershipMetadataInterface[?]- method
isBasicLevelOwnedwas marked as deprecated, use methodisUserOwnedinstead - method
isLocalLevelOwnedwas marked as deprecated, use methodisBusinessUnitOwnedinstead - method
isGlobalLevelOwnedwas marked as deprecated, use methodisOrganizationOwnedinstead - method
isSystemLevelOwnedwas marked as deprecated - method
getGlobalOwnerColumnNamewas marked as deprecated, use methodgetOrganizationColumnNameinstead - method
getGlobalOwnerFieldNamewas marked as deprecated, use methodgetOrganizationFieldNameinstead
- method
- Interface
MetadataProviderInterface[?] was renamed toOwnershipMetadataProviderInterface- method
getBasicLevelClasswas marked as deprecated, use methodgetUserClassinstead - method
getLocalLevelClasswas marked as deprecated, use methodgetBusinessUnitClassinstead - method
getGlobalLevelClasswas marked as deprecated, use methodgetOrganizationClassinstead
- method
- Class
ExtendClassLoader[?] was removed. TheOro\Component\PhpUtils\ClassLoaderis used instead of it - service
oro_email.listener.role_subscriberwas removed.
- Interface
RestResponseInterface[?] was changed. MethodsgetRawHeaders,xml,getRedirectCount,getEffectiveUrlwere completely removed - Interface
RestClientInterface[?] was changed. MethodgetXMLwas completely removed. - Class
GuzzleRestClient[?] methodgetXMLwas removed, please use a simplegetmethod instead and convert its result to XML - Class
GuzzleRestResponse[?]:- Methods
getRawHeaders,xml,getRedirectCount,getEffectiveUrlwere removed, in case you need them just use the construction such as$response->getSourceResponse()->xml() - Methods
getContentEncoding,getContentLanguage,getContentLength,getContentLocation,getContentDisposition,getContentMd5,getContentRange,getContentType,isContentTypewere 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.abstractwas removed, use instead classMenuUpdateBuilder
- abstract service
- Class
ReindexDemoDataListener[?] was removed. Logic was moved toReindexDemoDataFixturesListener[?]. Serviceoro_search.event_listener.reindex_demo_datawas 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-suitesparameter 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.classoro_workflow.configuration.config.workflow_list.classoro_workflow.configuration.handler.step.classoro_workflow.configuration.handler.attribute.classoro_workflow.configuration.handler.transition.classoro_workflow.configuration.handler.workflow.classoro_workflow.configuration.config.process_definition_sole.classoro_workflow.configuration.config.process_definition_list.classoro_workflow.configuration.config.process_trigger_sole.classoro_workflow.configuration.config.process_trigger_list.classoro_workflow.configuration.provider.workflow_config.classoro_workflow.configuration.provider.process_config.classoro_workflow.configuration.builder.workflow_definition.classoro_workflow.configuration.builder.workflow_definition.handle.classoro_workflow.configuration.builder.process_configuration.class
- Added the
form_event_subscriberoption 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_relationshipanddelete_relationship. See/src/Oro/Bundle/ApiBundle/Resources/doc/configuration.mdfor more information.
- Added processor tag
oro_workflow.processorandoro_workflow.processor_bagservice 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_updateoro.workflow.after_createoro.workflow.after_deleteoro.workflow.activatedoro.workflow.deactivated
- Created action
@get_available_workflow_by_record_groupclassGetAvailableWorkflowByRecordGroup[?] - Added
variable_definitionsto workflow definition - Added new
CONFIGUREpermission 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.twigwas 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.twigResources/views/Configuration/Mailbox/update.html.twigEmailBundle/Resources/views/Form/fields.html.twig
- Class
AutoResponseRuleController[?]- action
updatenow returns following data:form,saved,data,metadata
- action
- Form types
OroEncodedPlaceholderPasswordType,OroEncodedPasswordTypeacquiredbrowser_autocompleteoption 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_importdecoratesoro_importexport.async.import
- Class
HttpImportMessageProcessor[?]- does not implement TopicSubscriberInterface now.
- subscribed topic moved to tag in
mq_processor.yml. - service
oro_importexport.async.cli_importdecoratesoro_importexport.async.import
- Class
Oro/Bundle/SegmentBundle/Entity/Manager/StaticSegmentManager:- method
runnow also accepts a dynamic segment
- method
- Class
Oro/Bundle/SegmentBundle/Entity/Manager/StaticSegmentManagermethodbindParametersis deprecated and will be removed.
- The
ButtonListener[?] class was removed. Logic was transferred toDatagridActionButtonProvider[?] class. - Service
oro_action.datagrid.event_listener.buttonwas removed and neworo_action.datagrid.action.button_provideradded 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.providertag services.
- Class
AutoResponseRuleType[?] form fieldconditionswas removed. Use fielddefinitioninstead. - The
AutoResponseRule::$conditions[?] property was removed. Use methods related todefinitionproperty instead.
- Message topics
oro.importexport.cli_import,oro.importexport.import_http_validation,oro.importexport.import_httpwith the constants were removed.
- The option
--forcewas removed fromoro:installcli command.
- Service
jms_serializer.linkwas removed.
- Class
TransitionCustomFormHandler[?] and service@oro_workflow.handler.transition.form.page_formremoved (seeCustomFormProcessor[?]) - Class
TransitionFormHandler[?] and service@oro_workflow.handler.transition.formremoved see replacements: - Class
TransitionHelper[?] and service@oro_workflow.handler.transition_helperremoved (seeFormSubmitTemplateResponseProcessor[?]) - Class
StartTransitionHandler[?] and service@oro_workflow.handler.start_transition_handlerremoved (seeStartHandleProcessor[?]) - Class
TransitionHandler[?] and service@oro_workflow.handler.transition_handlerremoved (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_pathoption fromapi.ymlfor 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_pageand classResolveDestinationPage[?] - Added new tag
oro.action.extension.doctrine_type_mappingto 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.handleradded 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_provideradded to register custom update template data providers. - Class
FormTemplateDataProviderRegistry[?] added to collect tagged withoro_form.form_template_data_providerservices. - Class
CallbackFormTemplateDataProvider[?] added as interface compatibility helper for callable.
- Class
FileManager[?] and its serviceoro_importexport.file.file_managerwere added. We should use it instead of theFileSystemOperator[?] - Command
oro:cron:import-clean-up-storage(classCleanupStorageCommand[?]) was added.
- Added alias
layoutfororo_layout.layout_managerservice to make it more convenient to access it from container
- Added Configurable Permission
defaultfor View and Edit pages of User Role (see configurable-permissions.md)
- The service
oro_action.twig.extension.operationwas marked asprivate
- The service
oro_address.twig.extension.phonewas marked asprivate
- The service
oro_assetic.twig.extensionwas marked asprivate
- The service
oro_attachment.twig.file_extensionwas marked asprivate - Class
FileManager[?] methodwriteStreamToStoragewas changed topublic
- The service
oro_config.twig.config_extensionwas marked asprivate
- The service
oro_currency.twig.currencywas marked asprivate
- The service
oro_dashboard.twig.extensionwas marked asprivate
- Class
GridController[?] renamed methodfilterMetadatatofilterMetadataAction - Class
ExportHandler[?] (serviceoro_datagrid.handler) changed its service calls: it doesn't callsetRouterandsetConfigManagerany more but callssetFileManagernow. - Topic
oro.datagrid.exportdoesn't start datagrid export any more. Useoro.datagrid.pre_exporttopic instead. - The service
oro_datagrid.twig.datagridwas marked asprivate
- Class
Oro\Component\DependencyInjection\ServiceLinkRegistrytogether withOro\Component\DependencyInjection\ServiceLinkRegistryAwareInterfacefor 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_containerdependency (Symfony\Component\DependencyInjection\ContainerInterface) and usesOro\Component\DependencyInjection\ServiceLinkinstances internally. It can register public services byServiceLinkRegistry::addwithservice_idandalias. Later service can be resolved from registry by its alias on demand (method::get($alias)). - Class
Oro\Component\DependencyInjection\Compiler\TaggedServiceLinkRegistryCompilerPassto easily setup a tag by which services will be gathered intoOro\Component\DependencyInjection\ServiceLinkRegistryand then injected to provided service (usually that implementsOro\Component\DependencyInjection\ServiceLinkRegistryAwareInterface).
- Class
AssociationManager[?] changed the return type ofgetOwnerIteratormethod fromBufferedQueryResultIteratorto\Iterator - The service
oro_email.twig.extension.emailwas marked asprivate
- The service
oro_embedded_form.back_link.twig.extensionwas marked asprivate
- The service
oro_entity.twig.extension.entitywas marked asprivate
- Class
ConfigCache[?] the implementation was changed significantly, by performance reasons. The most ofprotectedmethods were removed or marked asprivate - The service
oro_entity_config.twig.extension.configwas marked asprivate - The service
oro_entity_config.twig.extension.dynamic_fields_attribute_decoratorwas marked asprivate
- Class
ExtendExtension[?]- calls to
addManyToManyRelation,addManyToOneRelationmethods now create unidirectional relations. To create bidirectional relation you MUST call*InverseRelationmethod respectively - call to
addOneToManyRelationcreates 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_fieldswas marked asprivate - The service
oro_entity_extend.twig.extension.enumwas marked asprivate
- The service
oro_entity_merge.twig.extensionwas marked asprivate
- The service
oro_entity_pagination.twig_extension.entity_paginationwas marked asprivate
- The service
oro_featuretoggle.twig.feature_extensionwas marked asprivate
- The service
oro_form.twig.form_extensionwas marked asprivate
- The service
oro_help.twig.extensionwas marked asprivate
- Class
ExportMessageProcessor[?] - Class
AbstractImportHandler[?] (serviceoro_importexport.handler.import.abstract) changed its service calls: it doesn't callsetRouterandsetConfigManagerany more but callssetReaderChainnow. - 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_logwith path/import_export/import-error/{jobId}.logwas renamed tooro_importexport_job_error_logwith path/import_export/job-error-log/{jobId}.log
- The service
oro_integration.twig.integrationwas marked asprivate
- Changed default value option name for
page_titleblock type, fromtexttodefaultValue
- The following services were marked as
private:oro_locale.twig.date_formatoro_locale.twig.localeoro_locale.twig.calendaroro_locale.twig.addressoro_locale.twig.numberoro_locale.twig.localizationoro_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_servicewas renamed tooro_message_queue.job.root_job_status_calculatorand marked asprivate - The service
oro_message_queue.job.calculate_root_job_progress_servicewas renamed tooro_message_queue.job.root_job_progress_calculatorand marked asprivate
- The service
oro_migration.twig.schema_dumperwas marked asprivate
- The following services were marked as
private:oro_menu.twig.extensionoro_navigation.title_service.twig.extension
- The service
oro_platform.twig.platform_extensionwas marked asprivate
- The service
oro_reminder.twig.extensionwas marked asprivate
- The service
oro_requirejs.twig.requirejs_extensionwas marked asprivate
- Class
ScopeManager[?]:- changed the return type of
findBymethod fromBufferedQueryResultIteratortoBufferedQueryResultIteratorInterface - changed the return type of
findRelatedScopesmethod fromBufferedQueryResultIteratortoBufferedQueryResultIteratorInterface
- changed the return type of
entityManagerinstead ofemshould be used inBaseDriverchildrenOrmIndexershould be decoupled fromDbalStorerdependency- The service
oro_search.twig.search_extensionwas marked asprivate - The
oro:search:reindexcommand now works synchronously by default. Use the--scheduledparameter 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.ormsecurity.acl.dbal.providersecurity.acl.cache.doctrinesecurity.acl.voter.basic_permissions
- The service
oro_security.twig.security_extensionwas marked asprivate
- The service
oro_segment.twig.extension.segmentwas marked asprivate
- The service
oro_sidebar.twig.extensionwas marked asprivate
- The service
oro_wamp.twig.sync_extensionwas marked asprivate
- The service
oro_tag.twig.tag.extensionwas marked asprivate
- The service
oro_theme.twig.extensionwas marked asprivate
- The service
oro_translation.twig.translation.extensionwas marked asprivate - Added
array $filtersType = []parameter to thegeneratemethod, that receives an array of filter types to be applies on the route in order to support filters such ascontainswhen generating routes - Class
AddLanguageType[?]- Changed parent from type from
localetooro_choice
- Changed parent from type from
- Updated service definition for
oro_translation.extension.transtation_packages_providerchanged publicity tofalse
- The following services were marked as
private:oro_ui.twig.extension.formatteroro_ui.twig.tab_extensionoro_ui.twig.html_tagoro_ui.twig.placeholder_extensionoro_ui.twig.ui_extension
- The service
oro_user.twig.user_extensionwas marked asprivate - Class
StatusController[?]- renamed method
setCurrentStatustosetCurrentStatusAction - renamed method
clearCurrentStatustoclearCurrentStatusAction
- renamed method
- The service
oro_windows.twig.extensionwas marked asprivate
- The service
oro_workflow.twig.extension.workflowwas marked asprivate
RouteExists[?] deprecated because of:- work with
RouteCollectionis 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_managerwas marked as deprecated
- The service
oro_entity_config.link.config_managerwas 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
DbalStoreris deprecated. If you need its functionality, please compose your class withDBALPersistenceDriverTrait- Deprecated services and classes:
oro_search.search.engine.storerDbalStorer[?]
- Interface
EngineV2Interface[?] marked as deprecated - please, useEngineInterface[?] instead PdoMysql[?]getWordsmethod is deprecated. All non alphanumeric chars are removed inBaseDriver[?]filterTextFieldValuefrom fulltext search for MySQL and PgSQL
- The parameter
oro_address.twig.extension.phone.classwas removed from DIC - The service
oro_address.provider.phone.linkwas removed
- The parameter
oro_assetic.twig_extension.classwas removed from DIC
- The parameter
oro_attachment.twig.file_extension.classwas removed from DIC
- The parameter
oro_config.twig_extension.classwas removed from DIC
- The parameter
oro_currency.twig.currency.classwas removed from DIC
- The service
oro_dashboard.widget_config_value.date_range.converter.linkwas removed
- Class
GroupConcat[?] was removed. UseGroupConcatfrom packageoro/doctrine-extensionsinstead.
Oro/Bundle/EmailBundle/Migrations/Data/ORM/EnableEmailFeatureremoved, feature enabled by default- The parameter
oro_email.twig.extension.email.classwas removed from DIC
- The parameter
oro_embedded_form.back_link.twig.extension.classwas removed from DIC
- The parameter
oro_entity.twig.extension.entity.classwas removed from DIC - The service
oro_entity.fallback.resolver.entity_fallback_resolver.linkwas removed
- The parameter
oro_entity_config.twig.extension.config.classwas removed from DIC
- The parameter
oro_entity_extend.twig.extension.dynamic_fields.classwas removed from DIC - The parameter
oro_entity_extend.twig.extension.enum.classwas removed from DIC
- The parameter
oro_entity_merge.twig.extension.classwas removed from DIC
- The parameter
oro_entity_pagination.twig_extension.entity_pagination.classwas removed from DIC
- The parameter
oro_form.twig.form.classwas removed from DIC - The parameter
oro_form.twig.js_validation_extension.classwas removed from DIC - The service
oro_form.twig.js_validation_extensionwas removed from DIC - Class
JsValidationExtension[?] was removed. Its functionality was moved toFormExtension[?]
- The parameter
oro_help.twig.extension.classwas removed from DIC
- Class
AbstractPreparingHttpImportMessageProcessor[?] and its serviceoro_importexport.async.abstract_preparing_http_importwere removed. You can usePreHttpImportMessageProcessor[?] andHttpImportMessageProcessor[?]. - Class
PreparingHttpImportMessageProcessor[?] and its serviceoro_importexport.async.preparing_http_importwere removed. You can usePreHttpImportMessageProcessor[?] andHttpImportMessageProcessor[?]. - Class
PreparingHttpImportValidationMessageProcessor[?] and its serviceoro_importexport.async.preparing_http_import_validationwere removed. You can usePreHttpImportMessageProcessor[?] andHttpImportMessageProcessor[?]. - Class
AbstractChunkImportMessageProcessor[?] and its serviceoro_importexport.async.abstract_chunk_http_importwere removed. You can usePreHttpImportMessageProcessor[?] andHttpImportMessageProcessor[?]. - Class
ChunkHttpImportMessageProcessor[?] and its serviceoro_importexport.async.chunck_http_importwere removed. You can usePreHttpImportMessageProcessor[?] andHttpImportMessageProcessor[?]. - Class
ChunkHttpImportValidationMessageProcessor[?] and its serviceoro_importexport.async.chunck_http_import_validationwere removed. You can usePreHttpImportMessageProcessor[?] andHttpImportMessageProcessor[?]. - Class
CliImportValidationMessageProcessor[?] and its serviceoro_importexport.async.cli_import_validationwere removed. You can usePreCliImportMessageProcessor[?] andCliImportMessageProcessor[?]. - Class
SplitterCsvFiler[?] and its serviceoro_importexport.splitter.csvwere removed. You can useBatchFileManager[?] instead.
- The parameter
oro_installer.listener.request.classwas removed from DIC
- The parameter
oro_integration.twig.integration.classwas removed from DIC
- Removed the following parameters from the DI container:
oro_layout.layout_factory_builder.classoro_layout.twig.extension.layout.classoro_layout.twig.renderer.classoro_layout.twig.renderer.engine.classoro_layout.twig.layout_renderer.classoro_layout.twig.form.engine.class
- The service
oro_locale.twig.namewas removed - The service
oro_translation.event_listener.language_changewas removed - Removed the following parameters from DIC:
oro_locale.twig.date_format.classoro_locale.twig.locale.classoro_locale.twig.calendar.classoro_locale.twig.date_time.classoro_locale.twig.name.classoro_locale.twig.address.classoro_locale.twig.number.class
- Class
Oro\Component\MessageQueue\Job\CalculateRootJobStatusServicewas removed. Logic was transferred toOro\Component\MessageQueue\Job\RootJobStatusCalculator
- The parameter
oro_migration.twig.schema_dumper.classwas removed from DIC
- Removed the following parameters from DIC:
oro_menu.twig.extension.classoro_navigation.event.master_request_route_listener.classoro_navigation.title_service.twig.extension.classoro_navigation.title_service.event.request.listener.classoro_navigation.twig_hash_nav_extension.class
- Removed the following parameters from DIC:
oro_organization.twig.get_owner.classoro_organization.twig.business_units.class
- The following services were removed:
oro_organization.twig.get_owneroro_organization.twig.business_units
- The parameter
oro_platform.twig.platform_extension.classwas removed from DIC
- The parameter
oro_reminder.twig.extension.classwas removed from DIC
- The parameter
oro_search.twig_extension.classwas removed from DIC
- Next container parameters were removed:
oro_security.acl.voter.classoro_security.twig.security_extension.classoro_security.twig.security_organization_extensionoro_security.twig.acl.permission_extension.classoro_security.listener.context_listener.classoro_security.listener.console_context_listener.class
- The service
oro_security.twig.security_organization_extensionwas removed - The service
oro_security.twig.acl.permission_extensionwas removed - Class
PermissionExtension[?] was removed - Class
OroSecurityOrganizationExtension[?] was removed
- The parameter
oro_segment.twig.extension.segment.classwas removed from DIC
- The parameter
oro_sidebar.twig.extension.classwas removed from DIC - The parameter
oro_sidebar.request.handler.classwas removed from DIC
- The parameter
oro_wamp.twig.classwas removed from DIC - The service
oro_sync.twig.content.tags_extensionwas removed
- The parameter
oro_tag.twig.tag.extension.classwas removed from DIC
@dbIsolationannotation removed, applied as default behavior@dbReindexannotation removed, useSearchExtensionTrait::clearIndexTextTable[?]
- The parameter
oro_theme.twig.extension.classwas removed from DIC
- Removed the following parameters from DIC:
oro_ui.twig.sort_by.classoro_ui.twig.ceil.classoro_ui.twig.extension.classoro_ui.twig.mobile.classoro_ui.twig.widget.classoro_ui.twig.date.classoro_ui.twig.regex.classoro_ui.twig.skype_button.classoro_ui.twig.form.classoro_ui.twig.formatter.classoro_ui.twig.placeholder.classoro_ui.twig.tab.classoro_ui.twig.content.classoro_ui.twig.url.classoro_ui.twig.js_template.classoro_ui.twig.merge_recursive.classoro_ui.twig.block.classoro_ui.twig.html_tag.classoro_ui.twig.extension.formatter.classoro_ui.view.listener.classoro_ui.view.content_provider.listener.class
- Removed the following services:
oro_ui.twig.sort_by_extensionoro_ui.twig.ceil_extensionoro_ui.twig.mobile_extensionoro_ui.twig.form_extensionoro_ui.twig.view_extensionoro_ui.twig.formatter_extensionoro_ui.twig.widget_extensionoro_ui.twig.date_extensionoro_ui.twig.regex_extensionoro_ui.twig.skype_button_extensionoro_ui.twig.content_extensionoro_ui.twig.url_extensionoro_ui.twig.js_templateoro_ui.twig.merge_recursiveoro_ui.twig.block
- The parameter
oro_user.twig.user_extension.classwas removed from DIC
- The parameter
oro_windows.twig.extension.classwas 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[?]setDriversmethod and$driversand injected directly toSearchIndexRepository[?]OrmIndexer[?]setDriversmethod and$driversand 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 Oro Platform. 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