The upgrade instructions are available at Oro documentation website.
The current file describes significant changes in the code that may affect the upgrade of your customizations.
- 6.1.0
- 6.0.0
- 5.1.0
- 5.0.0
- 4.2.0
- 4.1.0
- 4.0.0
- 3.1.4
- 3.1.0
- 3.0.0
- 2.6.0
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.0
- 1.10.0
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.0.0
- The
Oro\Bundle\ContactUsBundle\Entity\ContactRequest::$customerNameproperty was added.
PrepareResultItemListenerhas been removed as now search engine generates and stores entity name in the index in a separate field- Removed
\Oro\Bundle\ContactBundle\ImportExport\Strategy\ContactAddOrReplaceStrategy::importExistingEntity, functionality covered by\Oro\Bundle\ImportExportBundle\Strategy\Import\ConfigurableAddOrReplaceStrategy - Removed
\Oro\Bundle\ContactBundle\ImportExport\Strategy\ContactAddOrReplaceStrategy::fixDuplicateEntities, functionality covered by\Oro\Bundle\ImportExportBundle\Strategy\Import\ConfigurableAddOrReplaceStrategy
- Removed
\Oro\Bundle\CustomerBundle\ImportExport\Strategy\CustomerAddOrReplaceStrategy::processValidationErrors, functionality covered by\Oro\Bundle\ImportExportBundle\Strategy\Import\ConfigurableAddOrReplaceStrategy
The code of OroCRM connector to Magento 1 has been moved to a separate package.
- The
*.classparameters for all entities were removed from the dependency injection container. The entity class names should be used directly, e.g.,'Oro\Bundle\EmailBundle\Entity\Email'instead of'%oro_email.email.entity.class%'(in service definitions, datagrid config files, placeholders, etc.), and\Oro\Bundle\EmailBundle\Entity\Email::classinstead of$container->getParameter('oro_email.email.entity.class')(in PHP code).
- The
getSupportedClass()method was removed fromOro\Bundle\ActivityContactBundle\Direction\DirectionProviderInterface. Use theclassattribute of theoro_activity_direction.providerDIC tag instead.
- All
*.classparameters for service definitions were removed from the dependency injection container.
- The following deprecated API resources were removed:
GET /api/rest/{version}/customers.{_format}, useGET /api/rest/{version}/magentocustomers.{_format}insteadPOST /api/rest/{version}/customers.{_format}, usePOST /api/rest/{version}/magentocustomers.{_format}insteadGET /api/rest/{version}/customers/{id}, useGET /api/rest/{version}/magentocustomers/{id}.{_format}insteadPUT /api/rest/{version}/customers/{id}.{_format}, usePUT /api/rest/{version}/magentocustomers/{id}.{_format}insteadDELETE /api/rest/{version}/customers/{id}.{_format}, useDELETE /api/rest/{version}/magentocustomers/{id}.{_format}instead
- The deprecated API resource
GET /api/rest/{version}/leads/{leadId}/address.{_format}was removed, useGET /api/rest/{version}/leads/{leadId}/addresses.{_format}instead.
- Method
getSettingshas been removed fromOro\Bundle\ChannelBundle\Provider\SettingsProvider. UsegetChannelTypesandgetEntitiesmethods instead. - Method
Oro\Bundle\ChannelBundle\Provider\SettingsProvider::getDependentEntityDatahas been renamed togetDependentEntities. - Method
Oro\Bundle\ChannelBundle\Provider\SettingsProvider::isChannelSystemhas been renamed toisSystemChannel.
- In
Oro\Bundle\ContactUsBundle\Controller\ContactReasonController::deleteAction(oro_contactus_reason_deleteroute) action the request method was changed to DELETE. - In
Oro\Bundle\ContactUsBundle\Controller\ContactRequestController::deleteAction(oro_contactus_request_createroute) action the request method was changed to DELETE.
- In
Oro\Bundle\MagentoBundle\Controller\CustomerController::registerAction(oro_magento_customer_registerroute) action the request method was changed to POST. - In
Oro\Bundle\MagentoBundle\Controller\IntegrationConfigController::checkAction(oro_magento_integration_checkroute) action the request method was changed to POST. - In
Oro\Bundle\MagentoBundle\Controller\NewsletterSubscriberController::subscribeAction(oro_magento_newsletter_subscriber_subscriberoute) action the request method was changed to POST. - In
Oro\Bundle\MagentoBundle\Controller\NewsletterSubscriberController::unsubscribeAction(oro_magento_newsletter_subscriber_unsubscriberoute) action the request method was changed to POST. - In
Oro\Bundle\MagentoBundle\Controller\NewsletterSubscriberController::subscribeByCustomerAction(oro_magento_newsletter_subscriber_subscribe_customerroute) action the request method was changed to POST. - In
Oro\Bundle\MagentoBundle\Controller\NewsletterSubscriberController::unsubscribeByCustomerAction(oro_magento_newsletter_subscriber_unsubscribe_customerroute) action the request method was changed to POST. - In
Oro\Bundle\MagentoBundle\Controller\OrderPlaceController::syncAction(oro_magento_orderplace_new_cart_order_syncroute) action the request method was changed to POST. - In
Oro\Bundle\MagentoBundle\Controller\OrderPlaceController::customerSyncAction(oro_magento_orderplace_new_customer_order_syncroute) action the request method was changed to POST.
- Service
oro_channel.provider.exclusion_providerand related logic were removed. There is no exclusion for "channel type" entities on UI.
- Service
oro_crm.namespace_migration_providerand the logic that used it were removed.
- Package
oro/crm-mail-chimpremoved from composer.json, runcomposer require 'oro/mailchimp:3.1.*'before upgrade to keep functionality working - Package
oro/crm-abandoned-cartremoved from composer.json, runcomposer require 'oro/magento-abandoned-cart:3.1.*'before upgrade to keep functionality working
- Changes in
/api/contactaddressesREST API resource:- the attribute
createdwas renamed tocreatedAt - the attribute
updatedwas renamed toupdatedAt
- the attribute
- Changes in
/api/magentoaddressesREST API resource:- the attribute
createdwas renamed tocreatedAt - the attribute
updatedwas renamed toupdatedAt
- the attribute
- Changes in
/api/magentocartaddressesREST API resource:- the attribute
createdwas renamed tocreatedAt - the attribute
updatedwas renamed toupdatedAt
- the attribute
- Changes in
/api/leadaddressesREST API resource:- the attribute
createdwas renamed tocreatedAt - the attribute
updatedwas renamed toupdatedAt
- the attribute
- Traits
CreatedAtTraitandUpdatedAtTraitwere added. Use them instead of adding newupdatedAtandcreatedAtfields to the entity. - Interface
CreatedAtAwareInterfaceandUpdatedAtAwareInterfacewere added. Use them with theCreatedAtTraitandUpdatedAtTraittraits. - The new relation
orderNoteswas added to theOrderentity. It contains a collection of notes attached to the currentOrder. - The new entity
OrderNotewas added. It contains a single record of anOrder Note. - Class
IsDisplayOrderNotesSubscriberwas added. It blocks theisDisplayOrderNotesfield when the current channel does not support the order notes functionality. - Class
IsDisplayOrderNotesFormTypeand its serviceoro_magento_is_display_order_notes_typewere added to define all options required by theisDisplayOrderNotesfield in one place. - Class
OrderNotesDataConverterand its serviceoro_magento.importexport.data_converter.order_noteswere added to specify the converting logic for order notes from raw data to the data that is ready for deserialization. - Interface
MagentoTransportInterfacewas changed:- Added method
isSupportedOrderNoteExtensionVersion. It uses to check that retrieved extension version from magento is supported order note functionality. - Added method
getOrderNoteRequiredExtensionVersion. It is used to retrieve the required extension version from Magento that supports the order note functionality.
- Added method
- Classes
RestTransportandSoapTransportwere changed. They introduced implementation of the new methods that were added toMagentoTransportInterface. - Four datagrids were added to show order notes for customer, account, order. Documentation
- Class
OrderNotesExtensionand its serviceoro_magento.twig.order_notes_extension. Use them to check if the notes tab or grid are allowed to be shown. - Class
Contextwas added. Use it to deliver data fromChainProcessorto its sub-processors. - Class
ChainProcessorand its serviceoro_magento.importexport.processor.order_notes.chain_processorwere added. Use them to prepareOrder Notecollection for import. - Interface
ProcessorInterfacewas added. It is a contract for the sub-processors ofChainProcessor. - Class
ValidationNoteProcessorand its serviceoro_magento.importexport.processor.order_notes.validation_note_processorwere added. It's a sub-processor ofChainProcessorthat was added to filter invalidOrder Notes. - Class
NoteFieldsProcessorand its serviceoro_magento.importexport.processor.order_notes.note_fields_processorwere added. It's a sub-processor ofChainProcessorthat was added to map selected fields from theOrderto theOrder Noteentity and apply specific transformation functions to data that is kept in theOrder Notefields.
- Field
emailAddressnow have"contact_information"="email"entity property
- If you use REST API to manage the
Opportunityentity, keep in mind that theprobabilityfield is limited by the range of values from 0 to 1. Validation was added. In PATCH and POST requests it is not transformed as before (it was divided by 100). So, if you add an opportunity via API with the 0.5 probability, you will receive the same value in GET request.
- Entity
MagentoTransportwas changed:- The new
isDisplayOrderNotesfield was added. It tells whether order notes are to be displayed on theMagento CustomerandAccountview pages. - Method
isSupportedOrderNoteExtensionVersion. Use it to find out if channel configuration supports the synchronization ofOrder Notes.
- The new
- The parameter
oro_contact.subscriber.contact_listener.classwas removed form the service container
- The parameter
oro_magento.event_listener.customer_currency.classwas removed form the service container - The parameter
oro_magento.event_listener.order.classwas removed form the service container - The parameter
oro_magento.integration_entity.remove_listener.classwas removed form the service container
- In case when CRM is installed together with Customer Portal, the
Account Managerrole has full permissions for Account and Contact entities. The permissions for theAccount Manageris not changed if CRM is added to already installed Customer Portal.
- Two new datagrids were added to show purchased products from magento orders for customer and account. Documentation
- The new
sharedGuestEmailListfield was added to theMagentoTransportentity. During guest order synchronization, separateMagentoCustomerentities will be created for orders that have emails on thesharedGuestEmailList(email,firstNameandlastNamefields are used for identification). - Class
EmailListToStringTransformerwas added. Use it to transform text with different delimiters between entries into the list of emails. - Class
EmailAddressListValidatorwas added. Use it to validate array of emails. - Class
AbstractArrayToStringTransformerwas added. Use it to create your own transformers based on array to string transformation likeEmailListToStringTransformer. - Class
GuestCustomerStrategyHelperand its serviceoro_magento.importexport.guest_customer_strategy_helperwere added. Use it to check if guest customer emails are on thesharedGuestEmailList, and retrieve identification data to search for existing guest customers. - Class
SharedEmailListSubscriberis added to thesharedGuestEmailListblock field when OroBridge extension is not installed on the Magento side. - Class
SharedGuestEmailListTypeand its serviceoro_magento_shared_guest_email_list_typewere added to define all options required by thesharedGuestEmailListfield in one place.
- Class
RefreshChannelCacheListenerwas added. Use it to refresh cache after channel create or delete.
- Methods
transformArrayToStringandtransformStringToArraywere moved fromArrayToStringTransformertoAbstractArrayToStringTransformerand changed their visibility toprotected - Property
$delimiterwas moved fromArrayToStringTransformertoAbstractArrayToStringTransformerand changed its visibility toprotected
- Remove listener from
StateProvideron next events:oro_channel.channel.save_succeedoro_channel.channel.delete_succeed
- The
SoapTransport(Magento 1 default transport) andRestTransport(Magento 2) classes changed format of the data returned bygetWebsitesmethod. The old response was the following:
[
'id' => 'id', // Magento original webdsite id
'code' => 'code',
'name' => 'name',
'default_group_id' => 'default group id'
]
The new response is the following:
[
'website_id' => 'id', // Magento original webdsite id
'code' => 'code',
'name' => 'name',
'default_group_id' => 'default group id'
]
- The
WebsiteDataConverter[?]class was removed. TheWebsiteDataConverter[?] class should be used instead. In addition, the@oro_magento.importexport.data_converter.rest.websiteservice was replaced with@oro_magento.importexport.data_converter.website. - Class
AddressImportHelper[?]:- removed method
updateRegionByMagentoRegionIdOrUnsetNonSystemRegionOnlyuseupdateRegionByMagentoRegionIdinstead
- removed method
- Class
Magento2ChannelType[?] was added to support Magento2 as a new integration - Class
IntegrationConfigController.php[?] was added. It is a universal entry point for both Magento and Magento2 integration check requests - Class
MagentoTransport[?] was added. It's a parent forMagentoSoapTransportandMagentoRestTransportand it has all their similar properties and methods - Class
TransportHandler[?] and its serviceoro_magento.handler.transportwere added. It is a layer between transport and controller.- Method
getMagentoTransportwas added. Its main responsibility is to initialize and return MagentoTransport from check request. - Method
getCheckResponse: returns array with data for response.
- Method
- Class
ProviderConnectorChoicesProvider[?] and its serviceoro_magento.provider.connector_choiceswere added. It has method:getAllowedConnectorsChoicesit returns a list of connectors available for some integration.
- Class
RestPingProvider[?] and its serviceoro_magento.provider.rest_ping_providerwere added. Use it to send ping request to Magento and store response data. - Class
RestRokenProvider[?] and its serviceoro_magento.provider.rest_token_providerwere added. Use it to get a token, generate a new token and store it. - Class
RestTransportAdapter[?] was added. It converts MagentoRestTransport entity to interface suitable for REST client factory. - Class
RestTransport[?] and its serviceoro_magento.transport.rest_transportwere added. ImplementsTransportInterface,MagentoTransportInterface,ServerTimeAwareInterface,PingableInterface,LoggerAwareInterfaceThis class has the same responsibilities as SoapTransport. - The next batch jobs were added to
batch_jobs.yml:- mage_store_rest_import
- mage_website_rest_import
- New channel
magento2was added tochannels.yml - Interface
RestResponseConverterInterfacewas added. ClassResponseConvertersPass[?] was added. Collects converters that implementRestResponseConverterInterface - Processes
magento_soap_schedule_integrationandmagento_rest_schedule_integrationwere added - Class EventDispatchableRestClientFactory was added. It extends the basic factory functionality with an event which can be used to decorate REST client or replace it.
- Interface Oro/Bundle/IntegrationBundle/Provider/Rest/Transport/RestTransportSettingsInterface was added. The purpose of RestTransportSettingsInterface interface is to provide settings required for REST client initialization and are used in factories.
- Event Oro\Bundle\IntegrationBundle\Event\ClientCreatedAfterEvent was added. It is an event which is called when a new client is created. Use it if you want to decorate or replace a client in case of irregular behavior.
- Class Oro\Bundle\IntegrationBundle\EventListener\AbstractClientDecoratorListener was added. It is used by Oro\Bundle\IntegrationBundle\EventListener\LoggerClientDecoratorListener and Oro\Bundle\IntegrationBundle\EventListener\MultiAttemptsClientDecoratorListener. These listeners decorate the client entity after it was created.
- Trait Oro\Bundle\IntegrationBundle\Utils\MultiAttemptsConfigTrait was added. It is used in Oro/Bundle/MagentoBundle/Provider/Transport/SoapTransport and Oro\Bundle\IntegrationBundle\EventListener\MultiAttemptsClientDecoratorListener to execute the feature several times, if the process fails after the first try.
- Support for data synchronization with Magento 2 by REST protocol was added. Store, website and regions dictionaries are available for synchronization. However, synchronization of other entities has not yet been developed and it is, therefore, not available in the current version of the package. This is the reason for Magento 2 integration being absent from the "Channel type" field when creating a new channel. For more details on how to enable such integration, see Magento 2 Documentation.
- Class `Oro\Bundle\MagentoBundle\Entity\MagentoSoapTransport' was changed. Now it consists of fields and methods that are specific for SoapTransport.
- Class
CustomerIconProvider[?]. Its service was renamed tooro_magento.provider.customer.magento_customer_icon - Class
IntegrationAwareSearchHandler[?]- method
setSecurityFacadewas replaced withsetAuthorizationChecker
- method
- Class
NewsletterSubscriberPermissionProvider[?]- method
setSecurityFacadewas replaced withsetAuthorizationChecker
- method
- Class
ChannelType[?] was removed. Logic was moved toMagentoChannelType[?] and its service was renamed tooro_magento.provider.magento_channel_type - Class
StoresSoapIterator[?] was removed. Logic was moved toStoresSoapIterator[?]: - Class
MagentoSoapTransportRepository[?] was removed. Logic was moved toMagentoTransportRepository[?] - Class
SoapConnectorsFormSubscriber[?] was removed. Logic was moved toConnectorsFormSubscriber[?]- added protected method
getFormChannelType
- added protected method
- Class
SoapSettingsFormSubscriber[?] was removed. Logic was moved toSettingsFormSubscriber[?] and its service were renamed tooro_magento.form.subscriber.transport_setting- protected method
getModifierWebsitesListwas renamed tomodifyWebsitesListand now it returns void.
- protected method
- Class
SoapTransportCheckButtonType[?] was removed. Logic was moved toTransportCheckButtonType[?] - Method
getSoresinCartExpirationProcessor[?] was removed. Logic was moved togetStoresmethod - Class
AbstractMagentoConnector[?] was removed. Logic was moved toAbstractMagentoConnector[?] - Class
CartConnector[?] was removed. Logic was moved to `Oro\Bundle\MagentoBundle\Connector\CartConnector - Class
OrderConnector[?] was removed. Logic was moved toOrderConnector[?] - Class
RegionConnector[?] was removed. Logic was moved toRegionConnector[?] - Class
CustomerConnector[?] was removed. Logic was moved toCustomerConnector[?] - Class
NewsletterSubscriberConnector[?] was removed. Logic was moved toNewsletterSubscriberConnector[?] - Class
MagentoConnectorInterface[?] was removed. Logic was moved toMagentoConnectorInterface[?] - Class
AbstractLoadeableSoapIterator[?] was removed. Logic was moved toAbstractLoadeableIterator[?] - Class
AbstractPageableSoapIterator[?] was removed. Logic was moved toAbstractPageableIterator[?] - Class
AbstractBridgeIterator[?] was removed. Logic was moved toAbstractBridgeIterator[?] - Class
CartsBridgeIterator[?] was removed. Logic was moved toCartsBridgeIterator[?] - Class
CustomerBridgeIterator[?] was removed. Logic was moved toCustomerBridgeIterator[?] - Class
CustomerSoapIterator[?] was removed. Logic was moved toCustomerSoapIterator[?] - Class
CustomerGroupBridgeIterator[?] was removed. Logic was moved toCustomerGroupBridgeIterator[?] - Class
NewsletterSubscriberBridgeIterator[?] was removed. Logic was moved toNewsletterSubscriberBridgeIterator[?] and now implementsNewsletterSubscriberBridgeIteratorInterface - Class
OrderBridgeIterator[?] was removed. Logic was moved toOrderBridgeIterator[?] - Class
OrderSoapIterator[?] was removed. Logic was moved toOrderSoapIterator[?] - Class
RegionSoapIterator[?] was removed. Logic was moved toRegionSoapIterator[?]- protected method
findEntitiesToProcess()was moved to parent class - protected method
getEntityIds()was moved to parent class - protected method
getEntity($id)was moved to parent class - protected method
getIdFieldName()was moved to parent class - protected method
current()was moved to parent class
- protected method
- Class
WebsiteSoapIterator[?] was removed. Logic was moved toWebsiteSoapIterator[?] - Interface
MagentoTransportInterface[?]- removed the
callmethod because it conflicts with REST conception. From now on, MagentoTransportInterface will not allow to specify http methods and resource through parameters.
- removed the
- Route
oro_magento_soap_checkwas renamed tooro_magento_integration_check - Translation with key
not_valid_parameterswas removed - Process
magento_schedule_integrationwas removed.
- Implementation of REST API for customer association was changed.
- the logic related to the customer association is implemented in
CustomerAssociationListener[?]
- the logic related to the customer association is implemented in
- removed the following services:
oro_sales.api.get_config.customer_associationoro_sales.api.customize_loaded_data.customer_associationoro_sales.api.get_metadata.customer_associationoro_sales.api.get_metadata.get_configoro_sales.api.load_data.customer_associationoro_sales.api.opportunity.initialize_customer_type_guesser.customer_associationoro_sales.api.opportunity.initialize_customer_account_type_guesseroro_sales.form.guesser.customer_guesseroro_sales.form.guesser.customer_account_guesseroro_sales.form.type.customer_api(API form type aliasoro_sales_customer_api)oro_sales.form.type.customer_account_api(API form type aliasoro_sales_customer_account_api)
- Class
RFMBuilder[?]- changed the return type of
getEntityIdsByChannelmethod from\ArrayIterator|BufferedQueryResultIteratorto\Iterator
- changed the return type of
- Updated service definition for
oro_crm.extension.transtation_packages_provider:- changed class to
TranslationPackagesProviderExtension[?] - changed publicity to `false
- changed class to
- Class
RecalculateLifetimeCommand[?]- changed the return type of
getCustomersIteratormethod fromBufferedQueryResultIteratortoBufferedQueryResultIteratorInterface
- changed the return type of
- Class
AccountLifetimeSubscriber[?]- changed the return type of
getCustomersIteratormethod fromBufferedQueryResultIteratortoBufferedQueryResultIteratorInterface
- changed the return type of
- The following services were marked as
private:oro_channel.twig.metadata_extensionoro_channel.twig.lifetime_value_extension
- The service
oro_contact.twig.extension.social_urlwas renamed tooro_contact.twig.extensionand marked asprivate
- Class
AccountExtension[?]:- added UnsupportedGridPrefixesTrait
- opportunity
andlead` apis changed:customerAssociationrelation replaced bycustomerandaccountrelations
- Class
OpportunityRepository[?]:- Method
getNewOpportunitiesAmountwas marked as deprecated. MethodgetOpportunitiesByPeriodQBshould be used instead - Method
getWonOpportunitiesToDateCountwas marked as deprecated. MethodgetWonOpportunitiesCountByPeriodQBshould be used instead
- Method
- Removed the following parameters from DIC:
oro_channel.twig.metadata_extension.classoro_channel.twig.lifetime_value_extension.class
- Removed the following parameters from DIC:
oro_contact.twig.extension.social_url.class
- Class
SocialUrlExtension[?] was renamed toContactExtension[?]
- Changed minimum required php version to 5.6
- Added support of PHP 7.1
- The application has been upgraded to Symfony 2.8 (Symfony 2.8.10 is not supported because of Symfony issue)
- Added support of php 7
- Changed minimum required php version to 5.5.9
- Filter records by teams
- Pipeline forecast widget and report
- Contexts for all activities
- Account activities
- Unread email widget for the sidebar panel
- Activities are available in the Merge Accounts dialog, allowing you to specify merge strategy for every type of activity
- Filter emails by correspondent on the My Emails page
- Segment Magento customers by coupons and discounts applied to their orders
- Improved Email capabilities and features
- Email automation
- Contact history and last contact date is tracked for all records, allowing to segment them based on number of contacts, or date or direction of last contact
- Tags may be used as filtering conditions in segments and grids
- UX for Ecommerce Statistics widget has been improved
- Tracking of email conversations and threads
- Email signatures
- Email attachments
- Email contexts
- Immediate availability of Magento data after initial synchronization
- Automatic accounts discovery on Magento customers sync
- Create and Edit Magento customers from OroCRM
- Import of Magento newsletter subscribers
- Connection between web events and CRM data
- Connect guest/anonymous web events to customer after authentication
- Abandoned shopping cart campaigns
- New widgets for eCommerce dashboard
- Dropped support of Magento 1.6 due to API limitations.
- Availability of email campaign results for filtering in reports & segments. Now email campaign results, such as opens, clicks, bounces, etc., are available for filter queries in reporting and customer segmentation. This also includes campaign statistics received via MailChimp integration
RFM is a popular set of metrics used to analyze customer value and to determine the best customers, especially for retail and e-commerce. The 1.5.0 release of OroCRM adds the ability to configure RFM metrics for Magento channels.
The RFM score consists of three metrics:
- Recency, that evaluates the number of days that passed since the last purchase. The more recent is the purchase, the better.
- Frequency, that evaluates the number of orders placed by the customer in the last 365 days. The more frequently the customer buys, the better.
- Monetary value, that evaluates the total amount of orders placed by the customer in the last 365 days. The more money customer spends, the better. To construct these metrics, the entire range of values is divided into a small number of categories, or "buckets." The number of buckets usually lies in range of 3 to 10, and scores for R, F, and M range accordingly—from 1 (the best score) to the maximum number of buckets (the worst score). You can change the number of buckets and move their boundaries in order to adjust the scores to characteristic values of your business. After the metric is applied, every customer gets a three-number set of RFM scores. R1 F1 M1 identifies the best customers, and the higher the scores are, the worse these customers perform in a particular field. RFM scores are displayed on the Magento customer view page and on the customer section of the Account view. You may also re-use these scores in reporting and segmentation.
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.
Account entity now performs as the "umbrella" entity for all customer identities across multiple channels, displaying all their data in a single view.
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.
The UI for channel creation now allows the user to specify channel type. By default there are three channel types: Magento, B2B, and Custom; more channel types may be created by developers.
Each channel type characterizes the following:
- Whether a channel requires an integration. If the answer is yes (cf. Magento), the integration should be configured along the creation of the channel.
- Which entity will serve as the Customer Identity. This entity cannot be changed by the user.
- Which entities will be enabled in the system along with the channel. A specific set of entities comes by default (e.g. Sales Process, Lead, and Opportunity for B2B channel), but the user may remove or add entities if necessary.
B2B functionality, such as Leads or Opportunities will no longer be available by default—in order to work with them the user should create at least one B2B channel first. As a result it is now possible to configure your instance of OroCRM to be fully B2C-oriented and work only with entities that make sense in eCommerce context—with no mandatory Leads and Opportunities at all.
In order to comply with the new concept of Customer Identity, the new entity named B2B Customer was added to the system. It replaces Account in most cases of our default Sales Process workflows.
This feature provides the means to record historical sales for every channel type. The exact definition of what constitutes sales is subject to channel type: for Magento channels lifetime sales are counted as order subtotal (excluding cancelled orders), and for B2B channels it is counted as total value of won opportunities. The common metric allows you to quickly compare sales across channels in the account view, where both per-channel and account total values are displayed.
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 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.
In addition to default dashboard we have added a special Ecommerce-targeted board with three widgets:
- Average order amount
- New web customers
- Average customer lifetime sales
Every widget displays historical trend for the particular value over the past 12 months. You can also add them to any other dashboard using the Add Widget button.
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.
Account entity now performs as the "umbrella" entity for all customer identities across multiple channels, displaying all their data in a single view.
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.
The UI for channel creation now allows the user to specify channel type. By default there are three channel types: Magento, B2B, and Custom; more channel types may be created by developers.
Each channel type characterizes the following:
- Whether a channel requires an integration. If the answer is yes (cf. Magento), the integration should be configured along the creation of the channel.
- Which entity will serve as the Customer Identity. This entity cannot be changed by the user.
- Which entities will be enabled in the system along with the channel.
- A specific set of entities comes by default (e.g. Sales Process, Lead, and Opportunity for B2B channel), but the user may remove or add entities if necessary.
B2B functionality, such as Leads or Opportunities will no longer be available by default—in order to work with them the user should create at least one B2B channel first. As a result it is now possible to configure your instance of OroCRM to be fully B2C-oriented and work only with entities that make sense in eCommerce context—with no mandatory Leads and Opportunities at all. In order to comply with the new concept of Customer Identity, the new entity named B2B Customer was added to the system. It replaces Account in most cases of our default Sales Process workflows.
This feature provides the means to record historical sales for every channel type. The exact definition of what constitutes sales is subject to channel type: for Magento channels lifetime sales are counted as order subtotal (excluding cancelled orders), and for B2B channels it is counted as total value of won opportunities. The common metric allows you to quickly compare sales across channels in the account view, where both per-channel and account total values are displayed.
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 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.
In addition to default dashboard we have added a special Ecommerce-targeted board with three widgets:
- Average order amount
- New web customers
- Average customer lifetime sales
Every widget displays historical trend for the particular value over the past 12 months. You can also add them to any other dashboard using the Add Widget button.
- Magento Synchronization stabilization improvements
- Fixed issue: Incorrect row count on grids.
- Fixed issue: Reports and Segments crash when "Is empty" filter is added.
- Fixed issue: Recent Emails dashboard widget is broken.
- Fixed issue: Accounts cannot be linked to Contacts from Edit Contact page.
- Website event tracking
- Marketing campaigns
- Campaign code tracking
- Cases
- Processes within Magento integration
- Activities (Notes, Emails, Attachments)
- Data import in CSV format
- Zendesk integration
- Other changes and improvements
- Two-side customer data synchronization with Magento
- Improvements to Customer view
- Improvements to Magento data view
- Fixed issue Broken widgets in merged Account view
- Fixed Community requests
- Improvements to Customer view
- Improvements to display of Magento data
- Fixed issue Broken widgets in merged Account view
- Tasks
- Improved UI for launch of the Sales Process workflow
- Refactored Flexible Workflows
- Embedded forms
- Account merging
- Improved Reports
- Improved Workflow
- Improved Dashboard
- Magento import performance improvements
- Other improvements in channnels, contacts
- Magento data import: Customers, Shopping carts and Orders
- B2C Sales Flow
- Call view window
- Basic dashboards
- Reports creation wizard (Table reports)
- B2B Sales Flow adjustments
- Call entity
- Add weather layer in the map on contact view page
- Workflow transitions
- Make all entities as Extended
- End support for Internet Explorer 9
- OroPlatform Beta 3 dependency changes
- OroPlatform Beta 2 dependency changes
- CRM Entities reports
- Contacts Import/Export
- Account association with contacts
- Custom entities and fields in usage
- Leads and Opportunities
- Flexible Workflow Engine (FWE)
- Contacts Improvements
- added ability to manage addresses from contact view page with Google Maps API support
- added support of multiple Emails and Phones for Contact
- Address Types Management. Added ability to set different type for addresses in Contact address book
- Placeholders
- Developer toolbar works with AJAX navigation requests
- Configuring hidden columns in a Grid
- Auto-complete form type
- Added Address Book
- Many-to-many relation between Contacts and Accounts
- Added ability to sort Contacts and Accounts by Phone and Email in a Grid
- Localized countries and regions
- Enhanced data change log with ability to save changes for collections
- Removed dependency on lib ICU