hazelcast.com Open in urlscan Pro
141.193.213.20  Public Scan

Submitted URL: https://sub.hazelcast.com/t/107482/c/51ea9f14-68bf-4fd3-8a27-3bdf86bbc2c7/NB2HI4DTHIXS62DBPJSWYY3BON2C4Y3PNUXXEZLTN52XEY3F...
Effective URL: https://hazelcast.com/resources/adding-real-time-stream-processing-to-promote-offers-at-the-right-time/
Submission: On November 28 via api from US — Scanned from DE

Form analysis 2 forms found in the DOM

POST /resources/adding-real-time-stream-processing-to-promote-offers-at-the-right-time/#gf_2

<form method="post" enctype="multipart/form-data" target="gform_ajax_frame_2" id="gform_2" action="/resources/adding-real-time-stream-processing-to-promote-offers-at-the-right-time/#gf_2" novalidate="">
  <div class="gform_body gform-body">
    <div id="gform_fields_2" class="gform_fields top_label form_sublabel_below description_below">
      <div id="field_2_4" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible gfield-type-email" data-field-class="gfield-type-email" data-js-reload="field_2_4"><label
          class="gfield_label" for="input_2_4">Subscribe to our quarterly newsletter<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_email">
          <input name="input_4" id="input_2_4" type="email" value="" class="large" placeholder="Email address" aria-required="true" aria-invalid="false">
        </div>
      </div>
      <div id="field_2_5" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_5">
        <div class="ginput_container ginput_container_text"><input name="input_5" id="input_2_5" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
      <div id="field_2_6" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_6">
        <div class="ginput_container ginput_container_text"><input name="input_6" id="input_2_6" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
      <div id="field_2_7" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_7">
        <div class="ginput_container ginput_container_text"><input name="input_7" id="input_2_7" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
      <div id="field_2_8" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_8">
        <div class="ginput_container ginput_container_text"><input name="input_8" id="input_2_8" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
      <div id="field_2_9" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_9">
        <div class="ginput_container ginput_container_text"><input name="input_9" id="input_2_9" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
      <div id="field_2_10" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_10">
        <div class="ginput_container ginput_container_text"><input name="input_10" id="input_2_10" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
      <div id="field_2_11" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_11">
        <div class="ginput_container ginput_container_text"><input name="input_11" id="input_2_11" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
      <div id="field_2_12" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible gfield-type-hidden" data-field-class="gfield-type-hidden" data-js-reload="field_2_12">
        <div class="ginput_container ginput_container_text"><input name="input_12" id="input_2_12" type="hidden" class="gform_hidden" aria-invalid="false" value=""></div>
      </div>
    </div>
  </div>
  <div class="gform_footer top_label"> <input type="submit" id="gform_submit_button_2" class="gform_button button" value="Submit"
      onclick="if(window[&quot;gf_submitting_2&quot;]){return false;}  if( !jQuery(&quot;#gform_2&quot;)[0].checkValidity || jQuery(&quot;#gform_2&quot;)[0].checkValidity()){window[&quot;gf_submitting_2&quot;]=true;}  "
      onkeypress="if( event.keyCode == 13 ){ if(window[&quot;gf_submitting_2&quot;]){return false;} if( !jQuery(&quot;#gform_2&quot;)[0].checkValidity || jQuery(&quot;#gform_2&quot;)[0].checkValidity()){window[&quot;gf_submitting_2&quot;]=true;}  jQuery(&quot;#gform_2&quot;).trigger(&quot;submit&quot;,[true]); }">
    <input type="hidden" name="gform_ajax" value="form_id=2&amp;title=&amp;description=&amp;tabindex=0">
    <input type="hidden" class="gform_hidden" name="is_submit_2" value="1">
    <input type="hidden" class="gform_hidden" name="gform_submit" value="2">
    <input type="hidden" class="gform_hidden" name="gform_unique_id" value="">
    <input type="hidden" class="gform_hidden" name="state_2" value="WyJbXSIsIjhmMjYxOGY1NGI4MDU4OWM3MzhiYzNiZGIxOTFjOTY1Il0=">
    <input type="hidden" class="gform_hidden" name="gform_target_page_number_2" id="gform_target_page_number_2" value="0">
    <input type="hidden" class="gform_hidden" name="gform_source_page_number_2" id="gform_source_page_number_2" value="1">
    <input type="hidden" name="gform_field_values" value="">
  </div>
  <p style="display: none !important;"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="1669677348597">
    <script>
      document.getElementById("ak_js_1").setAttribute("value", (new Date()).getTime());
    </script>
  </p>
</form>

GET https://hazelcast.com/

<form role="search" method="get" id="searchform" action="https://hazelcast.com/">
  <div class="search-wrapper">
    <label class="sr-only" for="s">Search</label>
    <input placeholder="Search..." type="text" class="form-control search-input" value="" name="s" id="s">
    <button type="submit" class="search-submit"><span class="sr-only">Submit</span><i class="fa fa-search"></i></button>
  </div>
</form>

Text Content

Skip to content
 * Products & Services
    * Hazelcast Viridian Cloud Managed Services
      
      * Hazelcast Viridian services are secure, fully managed cloud services
        that help you quickly build fast and reliable applications in the cloud.
        Learn More
        
        Start for Free
      * Hazelcast Platform
        * Platform Overview
        * Low-Latency Storage
        * Stream Processing
    * Need Help?
      * Community
      * Support
      * Innovation Labs
        Sign-up for early access to releases, features and products.
      * Training
        
        * Get the skills you need to unleash the full power of your project.
          
          Sign Up
   
   Why HazelcastRequest a Demo
   
   Hazelcast Platform Explainer Video.
   
   Video
   
   Watch Now

 * Use Cases
    * Infrastructure
      * Real-Time Streaming Analytics
      * Real-Time Stream Processing
      * Fast Batch Processing
      * In-Memory Data Grid
      * More
    * Solutions
      * Internet of Things
      * Digital Transformation
      * Fraud Detection
      * 360° Customer View
      * More
    * Architecture
      * Microservices
      * ETL and Data Ingestion
      * Caching
      * Messaging
      * More
    * Industry
      * Trade Monitoring
      * Retail Banking
      * E-Commerce
      * Payment Processing
      * More
   
   Why HazelcastRequest a Demo
   
   The Evolution of Stream Processing and Top Use Cases
   
   Webinar
   | Video
   | 60 minutes
   
   Watch Now

 * Resources
    * By Topic
      * Get Started and Deployment
      * Build a Business Case
      * Caching
      * Microservices
      * Streaming
      * Competitive
      * Performance
      * Releases
    * By Type
      * Analyst Reports
      * Benchmarks
      * Webinars
      * Case Studies
      * White Papers
      * Events
      * Live Training Seminars
      * On-Demand Training
      * Datasheets
      * Ref Cards
      * Brochures
      * Guides
      * Videos
      * Documentation
      * e-Books
   
   Why HazelcastRequest a Demo
   
   Introducing Hazelcast Cloud Enterprise on AWS
   
   Webinar
   | Video
   | 60 minutes
   
   Watch Now

 * Training
 * Developers
    * Developers
      * Documentation
      * Open Source Projects
      * Open Source Downloads
      * Clients & Languages
      * Hazelcast Community
      * Connector Hub
   
   Why HazelcastRequest a Demo
   
   Join our Community of Developers
   
    * 
    * 
    * 

 * Company
    * Customers & Partners
      * Hazelcast Customers
      * Customer Case Studies
      * Hazelcast Partners
        * Find a Partner
        * Intel
        * Become a Partner
        * IBM
    * Hazelcast
      * Company
      * Newsroom
      * Leadership
      * Careers
      * Brand Assets
      * Events
      * Blog
      * Contact Us
   
   Why HazelcastRequest a Demo
 * Search

Get Hazelcast

Get Hazelcast

Search
Menu

CASE STUDY


ADDING REAL-TIME STREAM PROCESSING TO PROMOTE OFFERS AT THE RIGHT TIME


logo-bnp-paribas

Like any other business, banks need strong marketing efforts combined with IT
resources to expand their revenue opportunities. With the many beneficial
financial products they have to offer to their customers, they need to rely on
data for driving an efficient means for promotion. Customers might not know all
of their options, and maybe more importantly, might not know they should be
looking for more options. To get customers to explore solutions to their
financial needs, it is especially important to present products at the right
time. The timing not only increases the likelihood of customer engagement, but
also avoids making customers feel spammed with sales pitches that are irrelevant
to their needs.

The challenge is how to identify the right time for any given product promotion.
The simple answer to this is to offer a product at the time the customer is most
likely to need that product. To do this, a bank needs IT infrastructure that
responds in a real-time manner to customer interactions, and use of modern
stream processing technologies is a great way to add that capability. But that
presents another challenge – how to add stream processing to your existing
infrastructure to create an event-driven architecture, all in a cost-effective
way.


HOW BNP PARIBAS BANK POLSKA USES AN EVENT-DRIVEN ARCHITECTURE TO INCREASE
REVENUE OPPORTUNITIES.


BACKGROUND

BNP Paribas Bank Polska, which has been listed on the Warsaw Stock Exchange
since 2011 is a member of the BNP Paribas banking group whose footprint spans 71
countries. In Poland, as a universal bank with a global reach, it provides
services to retail customers and other segments including Wealth Management,
microbusinesses, SMEs and corporate banking. As it advocates green initiatives,
BNP Paribas Bank Polska supports its clients in the transition to a low carbon
economy, endeavors to curtail the adverse impact of its operations on the
natural environment and inspires clients to make good financial decisions. The
Bank has provided funding for more than 20,500 households to install
photovoltaic panels. The Bank also consistently pursues its strategy of
financing businesses in Poland while also supporting investments of strategic
importance to the country with a positive social, economic and environmental
impact.

At the same time, the Bank is efficiently digitalizing banking processes by
rolling out innovative solutions in its internet and mobile banking platforms:
GOonline and GOmobile. By taking into consideration the growing need for remote
access to services, the Bank has made it possible for clients to open an account
using a selfie. The Bank also enables clients who appreciate the opportunity to
hold a face-to-face meeting with an advisor to schedule an appointment in a
branch through the Booksy app. BNP Paribas Bank Polska is constantly adapting
its branches to serve all its clients. For instance, it offers the assistance of
a sign language interpreter free of charge in its branches and through the
hotline.

BNP Paribas Bank Polska proactively addresses socially important topics such as
the role played by women and their growing responsibility in society and at
work; it openly and sensitively promulgates diversity while pursuing activities
to involve employees and the overall market. The Bank is socially engaged
through its educational efforts ranging from giving smart assistance to
environmentally friendly solutions, to the Class program and sponsoring
activities. The latter focus on promoting tennis and culture, especially the
cinema.

Corporate social responsibility, one of the Bank’s key values, is deeply
embedded in its culture and pertains to how it cultivates relationships with its
employees and local communities. Bank employees take part in many initiatives
giving them an opportunity to change the world on a day-to-day basis. The
constantly growing number of employee volunteers was one of the factors that
contributed to the Bank becoming a strategic partner in the Noble Package
(Szlachetna Paczka) project, including support for this organization’s
operations and advancing the idea of extending thoughtful help.

THE BNP PARIBAS BANK POLSKA IT TEAM

The IT team of BNP Paribas Bank Polska had success using Hazelcast for
application acceleration in other use cases in the bank (see the earlier case
study, Maintaining an Online Edge in Today’s Highly Competitive Banking World),
so the opportunity to use the stream processing capabilities of Hazelcast made
sense. They had technical experts across many job responsibilities, including
architecture definition, technology recommendation, standards definition,
research, development, systems integration, and DevOps, so they were well
prepared to add new capabilities to enhance the business. This team is
accustomed to working on big picture initiatives that address much more than the
immediate need. In this particular initiative, they built a system that grew a
revenue channel in the short term, and also established a foundation for many
future use cases that depend on timely response to customer interactions.


CHALLENGE

The business challenge they faced was to increase the adoption of its products
to its customer base. The bank’s marketing team identified a set of responses to
specific customer situations, which would result in an offer for an
upsell/cross-sell product. One straightforward offer would be to promote
personal loans to any customer whose bank account balance was low and could not
provide the requested amount of cash via an ATM. The “error” notification was
captured by the bank, so it was theoretically easy to quickly respond with the
right offer to the customer. The marketing team expected that a timelier
response would be advantageous for increasing customer conversions, so they
turned to the IT team for help.

The team had built an elaborate architecture consisting of a services-oriented
architecture (SOA) and an enterprise service bus (ESB) that drove data flows
across the bank’s operations. All client-facing and back-office applications
were linked via the SOA bus. This architecture was the backbone of their IT
infrastructure and had been operating very reliably for the bank for several
years. Similar to their previous use cases that incorporated Hazelcast, they
wanted to retain all of the existing work, and only add components where
necessary to add new business capabilities. This was important to ensure they
added no major risk of disruption to their existing operations, considering that
everything was already working well. However, the batch-oriented infrastructure
based on CRM and data warehouse technology meant that it would typically take up
to two days to present the customer with an offer. This would not meet the
marketing team’s requirements on timely responsiveness.


SOLUTION

With their successes with Hazelcast in their prior use cases, it made sense for
the team to try Hazelcast in this new initiative. As a fast and easy to use
stream processing engine, Hazelcast was a natural fit for plugging into their
publish/subscribe messaging bus, turning their environment into an event-driven
architecture. This would give them the ability to act on events in real time,
especially since they were already capturing information about customer
interactions.

The data about each interaction (“event”) would not necessarily have a complete
view of the customer. It might have customer account information and transaction
details, but other information such as customer name and phone number were not
included. But this was not an issue since Hazelcast was used as a high-speed
customer account and product information repository, which provided enrichment
data to create that complete view. This data was sourced by the bank’s mainframe
computers, and was used across the many different banking channels, including
mobile and web.

As event data was read by Hazelcast, it was enriched with data lookups in the
in-memory data store in a very fast way. This provided the context necessary to
make better decisions on how to respond to the customer. The enriched event
could then be published back to the bus for downstream processes to use. One
example of a downstream action is sending the customer an SMS message about a
product offer, which could be sent immediately after the event, if desired by
the bank. This implementation gave the marketing team the ability to decide when
to contact the customer. The SMS messaging option provided a communications
channel that seemed to deliver more relevant and timely information than email.
This is especially true if messages can be sent soon after a customer
interaction with the bank.

One other aspect of their implementation helped to speed time-to-market for
future marketing promotions. The IT team implemented a module that runs within
the Hazelcast streaming engine that executes promotion rules written in the
Python programming language. This was valuable because there were members of the
marketing team who could code in Python, so they were empowered to create the
business logic for the promotions. This allowed them to run campaigns as they
wished, and freed the IT team from having to provide support in getting
promotions implemented into the system.

While the real-time promotion use case was the primary driving force behind the
implementation of Hazelcast, another use case with great potential arose. The
team essentially built a transaction tracking and aggregation system that could
perform business logic written in Python, which opened up more opportunities for
real-time processing. Originally, every event in the system, including
request/response events, represented a single transaction. With the new
infrastructure, they could filter, correlate, aggregate, enrich, and rewrite the
many related individual events, typically to consolidate them into a single,
all-encompassing event that was published back to the bus. This gave them the
ability to take action on events at a holistic level, which gave them the
context on what the customer was trying to do. For example, rather than merely
reading an isolated event data point regarding card insertion into an ATM, they
now could generate a complete, consolidated record of what happened during that
entire ATM session, including the fact that the transaction completed. Since
this consolidated information was published back to their existing bus, they
maintained the SOA/ESB pattern in their infrastructure so it would be easy to
add new capabilities on these new records.

This compiled information was important for the retail banking unit, especially
for mobile apps, as the apps now could simply read the aggregated records to
give customers the summarized information they sought. In fact, the mobile apps
do not even read the low-level events, as they only read and process these
consolidated event records. This allowed them to be more agile while also
avoiding unnecessary workloads on their core banking mainframes, as these tasks
are performed entirely in the Hazelcast-based components of their architecture.

As a business-critical system, they implemented two multi-node clusters in two
distinct data centers for supporting disaster recovery. The WAN Replication and
Automatic Failover features in Hazelcast made the implementation of the disaster
recovery strategy much easier.


RESULTS

The main outcome of the marketing initiative was that offer conversions
increased four-fold. As a result of pitching the customer at the right time,
which was soon after an interaction versus two days later, the offer came across
as timely and relevant. And by using SMS, the offers seem personalized for the
customer’s needs at the moment, and not like a broadly distributed spam email.
After only six months, the initiative became profitable, as the bank is earning
money from these proactive campaigns. The efficiency of the system ensures that
future campaigns will be inexpensive to launch. And since the new infrastructure
was built with extensibility in mind, the opportunity for future profit
continues to grow.

This new initiative was also a big win because it was easy to implement. The IT
team estimated that the cost of starting the pilot for Hazelcast in this
initiative was one-tenth the cost of using a data warehouse as the core
technology. It was easy to get started at low scale to see how the deployment
would work, and then scaling from there to a production-ready level was
straightforward. The effort took only six months from the start of the first
proof-of-concept to the production deployment of the first marketing offer. They
have since grown to supporting almost 70 campaigns, which process about 10
million events per day.

Processing completes in less than 120 milliseconds, which gives the marketing
team more than enough responsiveness to react quickly to customer needs. In most
cases, promotions had business logic to intentionally delay the customer-facing
communications by a few seconds to ensure delivery at the “right” time. The fast
responsiveness of the system was useful in creating the performance headroom
necessary to support further growth. This was especially important for setting
up a pathway for implementing more real-time processing in the bank.


NEXT STEPS

With this new stream processing technology in place, the IT team is looking
forward to leveraging its architecture for more real-time activities. In
addition to customer-facing promotions, they also see opportunities for
real-time analytics (versus batched analytics that take several hours) for
real-time monitoring of aggregated key performance indicators (KPIs). Rather
than getting all data and making decisions after batch analysis, there are
opportunities to run ongoing calculations that support faster decision-making.

The team is exploring additional technological pursuits that work with Hazelcast
to help with business agility. They are looking at OpenShift as a foundation for
all of their microservices. They are expecting to add more sources of data from
their many different channels. And they are considering other capabilities
provided by Hazelcast, such as the change data capture (CDC) module that
unobtrusively reads database transactions and publishes them into Hazelcast as
if they were real-time events.

> “When we started, we didn’t know if the system could support the different
> types of business logic and the expected campaign volumes for this to be a
> viable effort. But it was easy and relatively cheap to get started to see how
> the software could work. And we obtained good results, as the offer conversion
> rate is 4 times higher than before and the campaigns are profitable.”
> 
> — Szymon Domagala, Enterprise Architect, BNP Paribas Bank Polska S.A.

Download Case Study


LET'S GET STARTED!

Contact us now to learn more about how our in-memory computing platform can help
you leverage data in ways that immediately produce insight and actions.

Contact UsRequest a Demo


PRODUCTS AND SERVICES

 * Hazelcast Platform
 * Management Center
 * Security Suite
 * WAN Replication
 * High-Density Memory Store
 * SQL Querying
 * Pricing

RESOURCES

 * Documentation
 * Blog
 * Get Started
 * Guides
 * Training
 * Glossary

COMPANY

 * Contact Us
 * Support
 * Partners
 * Newsroom
 * Careers

"*" indicates required fields

Subscribe to our quarterly newsletter*











Δ

Follow Us
 * 
 * 
 * 
 * 

Silicon Valley (HQ)
3000 El Camino Real, Bld 4, Ste 200
Palo Alto, CA 94306
 * Privacy Policy
 * Terms of Use

© 2022 Hazelcast, Inc. All Rights Reserved.

Our website uses cookies to provide our users with the best possible experience.
Please refer to our updated privacy policy for more information.

Got It


HOW CAN WE HELP?

 * Request a Demo
 * Contact
 * Pricing

×
Search
Search Submit
×


Notifications