OroChannelBundle 

OroChannelBundle adds the Channel entity that represents the source of customer data into Oro applications and allows developers to define Channels types and specify the channel-related features in bundles YAML configuration files. It also provides UI for admin users to create and manage channels of the types defined by developers.

Entity Data Block 

This bundle brings the Channel entity into the system. A channel is a set of features that can be included in OroCRM. A channel can come with a customer datasource, which is an integration that brings business entities into the system. A feature is a set of entities and integration covering business direction needs.

For example:

A customer has a B2B business and needs a CRM to provide a complex B2B solution. To meet this requirement, they need to have a B2B channel created to enable leads and opportunities or any other B2B feature in the scope of this channel. Enabling this channel adds the Sales menu to the UI with Leads and Opportunities menu items.

By default, all specific to business direction features should be disabled, and will not be visible in reports, segments, menu, etc. (except for the entity configuration).

To implement the ability to enable the feature in the scope of a channel, create a ‘YourBundle/Resources/config/oro/channels.yml` configuration file.

Config example:

channels:
    entity_data:
        -
            name: Acme\Bundle\DemoBundle\Entity\RealEntity              # Entity FQCN
            dependent:                                                  # Service entities that dependent on availability of main entity
                - Acme\Bundle\DemoBundle\Entity\RealEntityStatus
                - Acme\Bundle\DemoBundle\Entity\RealEntityCloseReason
            navigation_items:                                           # Navigation items that responsible for entity visibility
                - menu.tab.real_entity_list
        -
            name: Acme\Bundle\DemoBundle\Entity\AnotherEntity
            dependent: ~
            navigation_items:
                - menu.tab.entity_funnel_list
                - menu.tab.some_tab.some_tab.some_value
            belongs_to:
                integration: integration_type_name                      # If entity belongs to integration, correspondent node should be set
                connector:   another                                    # connector name

Option

Description

name

Entity name

dependent

List of entities which will be shown/hidden too. (Related entities to the entity in field ‘name’)

navigation_items

List of menu items which should be enabled/disabled in any menu.

belongs_to.integration

Integration type name

belongs_to.connector

Integration connector name

The menu item should be hidden by default in the navigation configuration using parameter display with value false.

Example:

menu_config:
    items:
        menu_item:
            label: 'oro.some_entity.menu.tab.label'
            display: false
    tree:
        application_menu:
            children:
                menu_item: ~

Channel Types Block 

Channel is configured by the Channel Type and Entities fields. Some types of channels that bring customers also bring the integration field to configure the integration.

Config example:

channel_types:
    customer_channel_type:
        label: Channel type name
        entities:
            - Acme\Bundle\DemoBundle\Entity\Some
            - Acme\Bundle\DemoBundle\Entity\Another
        integration_type: some_type
        customer_identity: Oro\Bundle\ChannelBundle\Entity\CustomerIdentity
        lifetime_value: field
        priority: -10

Option

Description

Required

label

Label of the channel type

yes

entities

Determines which fields will be defined in the entities field after channel type has been selected

no

integration_type

Determines which integration type should be created in the scope of a particular channel that is based on the current type

no

customer_identity

Determines entity that will be used as customer identifier for channels that are based on the current type

no

lifetime_value

Determines which fields will be used from customer_identity for calculating lifetime sales value

no

priority

Uses to sort channel types by priority. The default value is 0

no

By default, if the customer_identity option is not set, Oro\Bundle\ChannelBundle\Entity\CustomerIdentity is used as the customer identity and is included automatically.

Lifetime Sales Value 

Lifetime sales value brings a 360-degree view of the account in the channel’s scope. Each channel type defines a field from the Customer Identity entity used to indicate the aggregated amount for a single customer.

OroChannelBundle provides a mechanism for tracking changes of lifetime sales value per customer and stores the history of those changes. You need to configure the lifetime field for channel type to enable tracking.

To use data from history, use Amount provider. It is registered as a service for DIC with the oro_channel.provider.lifetime.amount_provider identifier.

To display Life time on the page, use the oro_channel_lifetime_value twig extension that brings the oro_channel_account_lifetime twig function.

Examples of usage:

Lifetime for {{ channel.name }}: {{ oro_channel_account_lifetime(account, channel)|oro_format_currency }}