Skip to content

Releases: oroinc/crm-application

Release Notes

02 Dec 12:29
Compare
Choose a tag to compare

List of improvements and fixed bugs

  • Implemented form type guessers for custom fields of existing entities
  • Magento import: Fixed failed queries with empty contact phone
  • Magento import: Removed sensitive data displayed in API request logs
  • Magento import: Fixed duplicated jobs on two way Magento sync
  • Magento import: Fixed incorrect implementation Customer TAX/VAT Number
  • Magento import: Fixed lost address types after magento customer update
  • Zendesk: Detached entities issue after Entity Manager fail

Release Notes

17 Nov 16:32
Compare
Choose a tag to compare

List of improvements and fixed bugs

  • Added MailChimp support changes
  • Added migration for b2b customers
  • Added related entities to segments filters
  • Added shopping cart management to Oro Bridge support
  • Made Email campaign entities configurable
  • Made contact address, email and phone entities extendable
  • Fixed issues with lifetime value after update
  • Fixed upload pictures/avatar to entity
  • Fixed missing Campaign details grid and chart
  • Fixed "Sync data" on cart page with invalid API credentials
  • Fixed duplicates of entities during magento import

Release Notes

15 Oct 14:15
Compare
Choose a tag to compare

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.

Accounts.

Account entity now performs as the "umbrella" entity for all customer identities across multiple channels, displaying all their data in a single view.

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.

Channel management UI.

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.

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.

Lifetime sales value.

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.

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.

Ecommerce dashboard

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.

Release Notes

30 Sep 17:10
Compare
Choose a tag to compare

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.

Accounts.

Account entity now performs as the "umbrella" entity for all customer identities across multiple channels, displaying all their data in a single view.

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.

Channel management UI.

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.

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.

Lifetime sales value.

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.

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.

Ecommerce dashboard

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.

Release Notes

22 Sep 12:58
Compare
Choose a tag to compare

Stored XSS Vulnerability fixes

* added "|json_encode|raw" for values outputted in JS objects
* removed "|raw" from outputs of path in url attributes
* added "e('html_attr')|raw" when outputting html attributes
* removed mentions of "flexible entity" and unused code
* added validator for css field of embedded form, now if user will enter html tags in this field he will get an error message
* added stiptags filter for css of embedded forms
* changed translation message oro.entity_config.records_count.label to contain placeholder of records count and use UI.link macros in template instead of slicing str
* changed method of validation of emails on the client, old validation was working very slowly with some values like '">< img src=d onerror=confirm(/provensec/);>', n
* removed "trans|raw" where it's not required
* minor changes in templates to improve readability
* added Email validator for Lead
* fixed XSS vulnerability in Leads, Case Comments, Notes, Embedded forms, Emails, Business Units, Breadcrumbs
* fixed escaping of page title

Release Notes

14 Aug 18:37
Compare
Choose a tag to compare

The 1.3.1 release is mostly bug-fixing. Below is a list of the most important fixes.

Fixed issues:

  • Synchronization with Magento channel breaks after SQL error;
  • Incorrect row count on grids;
  • Reports and Segments crash when "Is empty" filter is added;
  • Initial synchronization with Magento channel completes with errors;

Release Notes

23 Jul 21:35
Compare
Choose a tag to compare

Website event tracking.

It is now possible to track user activity on web pages and record it in OroCRM. The tracking is done using Piwik JavaScript Tracking code snippets. (For additional information on the subject please check the documentation)
In order to start track events, you have to create a website first—this can be done under Marketing > Tracking Websites. After a site is created, you will get a template of tracking code that you can edit to suit your tracking demands and then embed it on desired pages of your website. By default the code contains only tracking of page views, but the template also contains a placeholder for event tracking code (hidden with comments).
By default all information is passed to OroCRM directly in the real time; note that it may cause performance issues if the traffic on the website is intensive. To avoid this, you may disable dynamic tracking and choose longer log rotation interval in the tracking configuration (System Configuration > General Setup > Tracking). You can also choose to store data not only in OroCRM, but on the Piwik host as well; to do so, specify Piwik credentials in the tracking configuration. Note that if this option is executed, website identifiers in OroCRM must be exactly the same as in Piwik.

Marketing campaigns.

This release introduces support for marketing campaigns. It is now possible to create Campaign records that contain name of the campaign, a unique campaign code that can be used for campaign tracking; provide a lengthy description to the campaign; specify its start and end dates, and estimate a budget.
A relation between Campaign and other entities may be introduced via entity configuration; by default such relation exists for Leads. These relations are available for segmentation and reporting; to provide an example of such use the bundle contains custom Campaign Performance report.
Campaigns are subject to standard ACL permissions; the default ownership type for them is User.

Campaign code tracking.

This feature is build atop the previous one. Its purpose is to link some events that have been registered on the website with a code of a particular campaign in order to measure its performance.
The campaign code can be registered in two possible ways: it can come in the get URL (a good example is a link that is provided to the customer in the newsletter email), or it can be attached to all events that occur on some "landing page."
Either way, such events will be registered in OroCRM with a link to the campaign, and will appear not only on the website page, but on the campaign page as well. The campaign page will also contain a summary report with the aggregate number of registered events of various types, and a timeline graph that will show the dynamics of event aggregation over the campaign lifetime.

Cases.

Case management is a CRM feature that is very important to e-Commerce users. Cases are CRM equivalents for real-world customer problems; when a customer writes an angry email about nondelivery of a product, or calls the hotline and asks for the nonstandard payment method—every time the case should be opened and maintained.
The case must contain a description of the problem that makes a case; some user should be made responsible for handling the case; and some context for the case might be provided. By default, the case has relations to Contact and Account, but you can add more relations via Entity configuration if necessary. For example, it might be useful to tie cases not just to customer's account, but also to the particular order the customer has problems with.
Cases in OroCRM are usable on their own, but they can also be a target to integration with third-party systems (see below).

Processes within Magento integration.

We have rewritten the existing Magento integration jobs and moved part of its functionality to built-in process. This change allows to separate the "synchronization" logic that will still be fulfilled by cron jobs, and the "CRM" logic that from now on will be fulfilled by processes triggered as a result of synchronization job. In this release, the built-in process only handles creation of Account and Contact upon Magento Customer data, but in future releases we intend to complete the separation of logic.

Activities.

In this release we introduce a new type of entities that we call Activities. From the user standpoint, activities equal to some widespread standardized tasks such as adding notes to entities or sending an emails in their context. Using activities allows to standardize user experience for such tasks all over the system, and makes them easily configurable in scope of every entity. All activities are subject to standard ACL permissions.
In scope of this release we introduce three activities: Notes, Emails, and Attachments. Calls and Tasks are in the roadmap for future releases.

  • Notes.
    Notes are small text messages that will appear in a dedicated Notes section on an entity view page below the record information.
    To add a note, click a corresponding button on top of a page, then enter a note text in the popup window that appears. Notes are added in a "string" in reverse chronological order—that is, they appear one after another and more recent notes appear higher by default. You can reverse the sorting order with a sorting control. You can also collapse or uncollapse each individual note, or collapse all of them at once using the corresponding control. You can also edit or delete notes if you have permissions to do so.
  • Emails.
    The ability to send an email in context of an entity record has been redesigned as a system-wide activity, providing a standardized and configurable user experience all over the system.
    Note that sending of emails via workflow transactions (e.g. in the Abandoned Shopping Cart flow) has not been refactored yet.
  • Attachments.
    Another activity added in 1.3 release is the ability to attach files and images to entity records. Attachments must be configured in scope of every entity; the admin should specify maximum file size and allowed MIME types for attached files.
    Attached files or images will be displayed in scope of the record and, if necessary, the user can download them from the system. The download link for every attachment will be protected: when a non-OroCRM user will try to use it, he will be prompted to login screen, and only after successful login the download will start.

Data import in CSV format.

The existing feature of CSV import and export of Contacts was expanded and generalized. It is now possible to configure templates for import & export of every entity, including custom ones. Ready-to-use import & export actions are available by default on the following entity grids: Account, Contact, Lead, and Opportunity. Export is also available for Users.

Zendesk integration.

Zendesk is a customer service software which main purpose is to provide means of communication between business owners and their customers. It is therefore a great match to Cases feature of OroCRM.
The integration allows the following features:

  • Synchronization with the existing Zendesk account (multiple integrations possible)
  • One-way synchronization of Zendesk users with OroCRM contacts: for every Zendesk user there will be a matching OroCRM Contact
  • Two-way synchronization of Zendesk tickets with OroCRM Cases
    • When a ticket is created in Zendesk, a matching Case will be created OroCRM
    • When a case is created in OroCRM, the user may link it to Zendesk ticket
    • All changes in a matching pair of Case and ticket are synchronized; the strategy for resolving conflicting changes is subject to configuration.
  • Two-way synchronization of comments to Cases/tickets between two systems.
    Zendesk integration will not come in default OroCRM package; it will be available as a free extension in the Marketplace.

Other changes and improvements

  • Default owners were introduced for channels; this value will be applied to all data.
  • Magento Order creation/completion form that appears in the iframe popup when the user tries to convert an existing shopping cart or create a new order now looks more in line with OroCRM style.
  • Entity grid data is now exported with filters and sorting applied; pagination is not preserved (all pages are exported at once).
  • Attribute key has been changed from the "attribute name" to the "scope + attribute name," so attributes of the same name can be used in different scopes.
  • User avatars are now processed the same way as other fields of image type.
  • The content of image and file type fields can now be imported and exported in the form of download links in the standard CSV import/export feature.
  • Job queue has been improved with multiple workers and jobs priorities.
  • Custom jobs for Magento integration were turned into processes.
  • Declaration of doctrine types for money an percent have been moved to config.yml.
  • Doctrine subscribers were converted to listeners, and all doctrine listeners have been marked as lazy.

Release Notes

29 May 12:30
Compare
Choose a tag to compare

Two-side customer data synchronization with Magento

In 1.2 release it is now possible to edit customer data on the OroCRM side and synchronize the changes back to Magento. To do so, you need to enable such synchronization in channel settings (this is possible for existing channels as well as the new ones). After two-way data sync is enabled, all changes in Contacts and Contact Addresses that are related to Magento Customers will be synced back to Magento, so Contacts and Customers will always be in sync. Similarly, all changes to Magento Customer will now affect related Contacts if two-way data sync is on.
System behavior for conflicting changes (e.g. contact data was edited both on Magento side and OroCRM side) can be configured in Channel settings; By default the preference is given to Magento data. We have plans to introduce conflict resolution UI in the future release

Improvements to Customer view

The view now features a location map widget, and full history of Orders and Shopping Carts that are related to a Customer. These changes should greatly improve the experience of working with Customer data, especially when you are considering a direct sales approach such as placing an order from the Customer page.

Improvements to Magento data view

The most noticeable improvement will be removal of per-channel division of Web Customers, Orders, and Shopping Carts in the navigation menu – all records of these entities are now accessed via single pages with "unified" grids. Also, the column sets of each grid has been changed as well:

  • Web Customers grid now features Channel, as well as the lifetime value of the Customer, and country and state of customer's default billing address.
  • Shopping Carts grid features the same Channel, and billing country and state. Note that the latter two are taken from the particular cart, and can differ from customer's default.
  • Orders grid was enriched not just by Channel, but by Website as well. In addition to existing Total paid, Grand total and Sub total amounts were added. Finally, billing country and state were added, too.
    All these additional attributes can be used as filters.

Release Notes

26 May 14:12
Compare
Choose a tag to compare

Magento Import improvements and fixes

  • Fixed validation of Magento Channel over https
  • Improved entity validation in Magento import
  • Added option to force run Magento Synchronization

Release Notes

12 May 20:13
Compare
Choose a tag to compare

Improvements to Customer view

In 1.2 release, Magento Customer view is noticeably improved. The idea behind the changes was that we wanted to make it more in line with 360° approach that we are using for Account and Contact views. The view now features a location map widget, and full history of Orders and Shopping Carts that are related to this Customer. These changes should greatly improve the experience of working with Customer data, especially when you are considering a direct sales approach such as placing an order from the Customer page.

Improvements to display of Magento data

The most noticeable improvement will be removal of per-channel division of Web Customers, Orders, and Shopping Carts in the navigation menu – all records of these entities are now accessed via single pages with "unified" grids. Also, the column sets of each grid has been changed as well:
Web Customers grid now features Channel, as well as the lifetime value of the Customer, and country and state of customer's default billing address.
Shopping Carts grid features the same Channel, and billing country and state. Note that the latter two are taken from the particular cart, and can differ from customer's default.
Orders grid was enriched not just by Channel, but by Website as well. In addition to existing Total paid, Grand total and Sub total amounts were added. Finally, billing country and state were added, too.
All these additional attributes can be used as filters.