APACHE UNOMI IN-DEPTH I 2nd October 20151
APACHE UNOMI IN-DEPTH
SERGE HUBER, CTO & Co-founder, shuber@jahia.com
APACHE UNOMI IN-DEPTH I 2nd October 20152
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
APACHE UNOMI IN-DEPTH I 2nd October 20153
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
APACHE UNOMI IN-DEPTH I 2nd October 20154
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
APACHE UNOMI IN-DEPTH I 2nd October 20155
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
APACHE UNOMI IN-DEPTH I 2nd October 20156
HISTORY
NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
APACHE UNOMI IN-DEPTH I 2nd October 20157
INTRODUCING UNOMI
YOU KNOW ME ?
WHAT IS
UNOMI?
APACHE UNOMI IN-DEPTH I 2nd October 20158
TARGETED FUNCTIONALITIES
MARKETING TO MARKETERS
UNOMI
User tracking
Event tracking
Goal tracking, scoring Segmentation Form
Input
tracking
Download
tracking
Impersonification
(personas)
A/B testing
Profile
(visitor,contact,leads)
management and export
Reporting
Privacy
management
APACHE UNOMI IN-DEPTH I 2nd October 20159
ARCHITECTURE DESIGN GOALS
FROM LESSONS LEARNED THE HARD WAY
1
2
3
Avoid putting additional
load on the WCMnodes
Highly scalable
(avoiding node cross-talk)
Make it easy for users
to define and use
marketing segments
4
5
6
Integration with existing
analytics
Integration with multiple
systems including mobile apps,
not just WCM
Highly pluggable architecture,
making it easy to extend and
build differentsolutions based
on a common core
APACHE UNOMI IN-DEPTH I 2nd October 201510
SCALING ARCHITECTURE
THROWING MORE SERVERS AT THE PROBLEM
CONTEXT
SERVER
CMS
Issue
trackingCRMSocial
APACHE UNOMI IN-DEPTH I 2nd October 201511
INPUT/OUTPUT
RULES
ACTIONS
Protocols
HTTP REST + JSON
SEGMENTSEVENTS
CONTEXT
CONDITIONS
PROFILES
MUST REFRAIN… NO JOKES ON I/O
CONTEXT SERVER
APACHE UNOMI IN-DEPTH I 2nd October 201512
REQUEST FLOW
HEY LOOKI HAVE ARROWS
Load HTML page
Load HTML +JS
to connectContextServer
Load context.js
Context for currentrequest
(Optional)Load contentbased
on context
(Optional)Send event such as login / hover
BROWSER CMS CONTEXT SERVER
JS callbacks
APACHE UNOMI IN-DEPTH I 2nd October 201513
CONTEXT EXAMPLE
digitalData = {
"loaded": true,
"user": [{
"profiles": [{
"profileInfo": {
"profileId": "d6454520-f2b6-40b7-829c-d17214f209d1”,
"firstName": "Serge",
"lastName": "Huber”,
"userName": "Serge Huber",
"email": "bhillou@yahoo.com",
"gender": "male”,
"itemClass": "org.oasis_open.context.server.api.User",
"segments": ["alwaysTrue", "maleGender"]
}
}]
}]};
FOR THE JSON ADDICTS LIKE ME
APACHE UNOMI IN-DEPTH I 2nd October 201514
UNOMI ARCHITECTURE
LOTS OF BOXES
APACHEKARAF
PERSISTENCE IMPLEMENTATION(ELASTICSEARCH, …)
PERSISTENCE SPI(SERVICE PROVIDER INTERFACE)
APACHE CXF
REST API
OSGISERVICES
APACHE UNOMI IN-DEPTH I 2nd October 201515
UNOMI SERVICES
STUFF THAT ACTUALLY DOES STUFF
PROFILES
Managesprofilesandpersonas
(loading,updating,saving,
deleting,merging, …)
PRIVACY
Managesprivacy (anonymous
browsing,event filtering,profile
deletion)
QUERIES
Performs queries againstthe
stored data(events,profiles,…)
SEGMENTS
Managessegments(definitions,
loading,saving,scoring)
DEFINITIONS
Managespropertytypes,
conditiontypes,actionstypes,
tags andother metadata
CLUSTERING
Managesthe clusterof
context servers
APACHE UNOMI IN-DEPTH I 2nd October 201516
VISITOR PROFILES
YOU KNOW ME, I GET IT !
A profile is createdas soon
as a visitor arriveson a site
Trackedby
navigator cookies
Populated through events,
such as page views,CMS
login, Social login, mobile
action, beacon detectedor
form submissions
Sessions are tracked for
each profile,history of
navigation is accessible too.
APACHE UNOMI IN-DEPTH I 2nd October 201517
SEGMENTS
I’M A PERSON NOT A SEGMENT
Built
through
simple UI
Conditions
match user
profile
properties
Potentially
complex
assembly of
conditions
Example
Profilesyounger
than 25 and have
an incomeof more
than USD 100’000
(young rich
segment)
APACHE UNOMI IN-DEPTH I 2nd October 201518
EVENTS
I DID WHAT WHEN ?
Client or server-side eventscanbe sent to the context
server,intheory in very high volume
The context server willprocessthe eventsusing plugins,
either synchronously or asynchronously (for example
using an Apache Mahout BigData analysis cluster)
Example: login eventsends additional user data, page
vieweventused to build user or general analytics, mouse
over eventcan be used to build content heat maps
Sample request:
GET
http://wemicontext.name:8181/eventcollector/view?url=PAGE_URL&referr
er=REFERRER_URL (referrer isdifferentfor AJAX requests so we use the
document.referrer to build thisrequest)
APACHE UNOMI IN-DEPTH I 2nd October 201519
IMPERSONIFICATIONS (PERSONAS)
FOR WHEN YOU WISH YOUWERE SOMEONE ELSE
⎯ Persona definition make it
possible to “emulate” a certain type
of profile, e.g : US visitor, non-US
visitor, search engine bot, …
⎯ Predefined personas as well as
persona editing UIavailable
⎯ Jahia provides a side-panel UI to
view profile and session data for
both the current profile or switch
between available personas and
see immediate personalization
changes
APACHE UNOMI IN-DEPTH I 2nd October 201520
RULES
ONE SERVER TO RULE THEM ALL
⎯ Executed mostly on
event triggers
⎯ Use same conditions are
segments to match events
⎯ May perform a list of
actions (update profile,
session, send email)
APACHE UNOMI IN-DEPTH I 2nd October 201521
RULES, CONTINUED
ANOTHER RULE : YOUSHOULD LISTEN TO
THE SPEAKER INSTEAD OF READING THESE
⎯ Conditions evaluate to a boolean that will
determine if the actions of the rule will be
executed or not
⎯ Conditions may be complex, using operators
such as and/or for building sub-conditions
(condition tree)
⎯ Conditions and actions are either pre-defined
or may be extended using Unomi plugins
Structure:
when
conditions
then
actions
Example:
when
login event is received
then
merge profiles based on login id
APACHE UNOMI IN-DEPTH I 2nd October 201522
PROFILE MERGING
BECAUSE MERGING PEOPLE DIDN’T WORK WELL AS A TITLE
A single (physical) visitor may come to a website or web
service using differentdevicesor browsers
APACHE UNOMI IN-DEPTH I 2nd October 201523
PROFILE MERGING
BECAUSE MERGING PEOPLE DIDN’T WORK WELL AS A TITLE
Each visit will (initially) generate a separate profile ID
Upon visitor identication (usually after login), the current
profile will be merge with any existing profiles with the
same identifier
Tracking cookies will be modified to associated with the
identifier of the mergedprofile
Recognized visitors will therefore be trackedacross
devices,as the same profile instead of differentones
APACHE UNOMI IN-DEPTH I 2nd October 201524
PLUGINS
NOT THAT TYPE OF PLUG, COME ON
Custom conditions to be usedin segments or
rules
Custom actions to be used in rules
Custom session or profile property definitions
Resource bundles
Predefinedrules
Predefinedsegments
Predefinedscoring
PLUGINS MAY INCLUDEPlugins are OSGi bundles that may extend the
built-in functionality of the Context Server
APACHE UNOMI IN-DEPTH I 2nd October 201525
PLUGIN EXAMPLE
YEAH SOME MORE JSON !
MAIL ACTIONPLUGIN
⎯ Defines a new custom action : send an email
⎯ Provides a Java implementation of the action
⎯ Provides a JSON descriptor to declare the action
and it’s parameters to Unomi
⎯ Parameters will be used to build UI to edit the action
instance
{
"id":  "sendMailAction",
"actionExecutor":  "sendMail",
"tags":  [  "event"  ],
"parameters":  [
{
"id":  "from",
"type":  "string",
"multivalued":  false
},
{
"id":  "to",
"type":  "string",
"multivalued":  false
},
{
"id":  "cc",
"type":  "string",
"multivalued":  false
},
APACHE UNOMI IN-DEPTH I 2nd October 201526
PLUGIN EXAMPLE
YEAH SOME MORE JSON !
{
"id":  "bcc",
"type":  "string",
"multivalued":  false
},
{
"id":  "subject",
"type":  "string",
"multivalued":  false
},
{
"id":  "template",
"type":  "string",
"multivalued":  false,
"defaultValue":  "Hello  $profile.properties.("j:firstName")$  
$profile.properties.("j:lastName")$,nHoware  you  doing  today?"
}
]
}
APACHE UNOMI IN-DEPTH I 2nd October 201527
PERSISTENCE
SAVING THOSE PRECIOUS MOMENTS
⎯ Service Provider Interface
⎯ Default implementation : ElasticSearch
⎯ ElasticSearch providesout of the box :
⎯ NoSQL JSON document storage
⎯ Built-in scaling and clustering
⎯ Separate nodes for data storage
& query execution
⎯ Powerfulquery sub-system
⎯ Apache License
APACHE UNOMI IN-DEPTH I 2nd October 201528
REST API
EXPOSING OURSELVES TO THE OUTSIDE, CLEANLY
FUNCTIONALITIES
⎯ Implemented using Apache CXF
⎯ REST + JSON protocol (no SOAP or other
bindings to keepthings simple)
⎯ Exposes most ofUnomi’s built-in services
⎯ Protectedby Karaf container security
⎯ Will be standardized by OASIS Context
Server specification
⎯ Can be used to either built administration
UI or interface with third party systems
APACHE UNOMI IN-DEPTH I 2nd October 201529
PRIVACY SERVICE
YOU KNOW ME A BIT TOO MUCH ?
FUNCTIONALITIES
⎯ Server andeventdiscovery
⎯ Currentvisitor profile access
⎯ Retrieving and setting list of eventsto may
or may not be collectedfor currentprofile
⎯ Management of anonymous browsing,
including anonymous collection activation or
anonymizing ofpreviously collecteddata
⎯ Profile deletion
3RD PARTY UIS may be built to
give end-userscontrol over their data.
APACHE UNOMI IN-DEPTH I 2nd October 201530
ALGORITHMS
DISCOVERING (BAD) HABBITS AND BEHAVIORS
This is not yet
implementedin
Unomi…
The Context Server can also integrate “algorithms”, meaning that data can be
processed/mined to extract additional knowledge
APACHE UNOMI IN-DEPTH I 2nd October 201531
ALGORITHMS
OUR IDEAS
RECOMMENDATION ENGINE
SIMILARITY ENGINE
APACHE MAHOUT INTEGRATION
BIGDATA INTEGRATION
APACHE UNOMI IN-DEPTH I 2nd October 201532
ALGORITHMS, CONTINUED
EVEN BETTER TARGETING
Open source reference
implementation will also help
guarantee interoperability
Algorithms have the
potential to make it much
easier for integrators and
developers to provide
functionality to users of
Unomi
If/When OASISContext
Server specification includes
them, the potential for re-
usability between
implementation could be very
interesting
APACHE UNOMI IN-DEPTH I 2nd October 201533
CONNECTORS
NO MORE INAPPROPRIATE JOKES PLEASE
CUSTOM
CONDITIONS
maybe used to
perform dynamic
dataexchanges
uponincoming
events
can perform
calls toexternal
services
EXTERNAL
SERVICES
mayuse Unomi’s
publicURLs or
administrationURLs
to access REST
services (for
querying,reporting,
editing,etc)
EXTERNAL
SYSTEMS
maypushdatainto
Unomieither
throughevents
DIRECT
ACCESS
to ElasticSearch
is alsopossible
to directly
interface with
the persistence
system
CUSTOM
ACTIONS
APACHE UNOMI IN-DEPTH I 2nd October 201534
OASIS CONTEXT SERVERSTANDARD
AN OVERVIEW WITH LOTS OF COMPETITORS
Co-chairs
Serge Huber (myself)
Jahia
Thomas Sigdestad
Enonic
Established technical
committee in April 2015
APACHE UNOMI IN-DEPTH I 2nd October 201535
OASIS CONTEXT SERVERSTANDARD
MEMBER COMPANIES
APACHE UNOMI IN-DEPTH I 2nd October 201536
OASIS CONTEXT SERVERSTANDARD
GOOOOOOAAAAALLLLLSSSS !
PROVIDE ASTANDARD
§ A context server REST API
§ An associateddomainmodel
§ An opensource reference
implementation(ApacheUnomi)
APPROVED
Makesure thatthe
standardis basedonreal
needs of theindustry
DESIGNED FOR GREATNESS
Not onlyCMS-specific, designed
to integratewithas manytoolsas
possible(CRM,ERP, mobile
applications,…)
APACHE UNOMI IN-DEPTH I 2nd October 201537
OASIS CONTEXT SERVERSTANDARD
WORK ORGANIZATION AND STUFF DONE
https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cxs
Whole TCmeets once per month
2 workgroups meet once per week
CURRENT STATUSMEETINGS
⎯ Use case listing & discussions :
completion
⎯ Domain model definition :
undergoing
⎯ REST API : to be done
⎯ Formal specification : to be done
APACHE UNOMI IN-DEPTH I 2nd October 201538
INCUBATION PROPOSAL
WHO TO BLAME J
https://wiki.apache.org/incubator/UnomiProposal
Champion
Jean-Baptiste Onofré
Talend
Mentor
Bertrand Delacretaz
Adobe
Mentor
Roman Shaposchnik
Pivotal
Mentor
ChrisMattmann
NASA JPL
APACHE UNOMI IN-DEPTH I 2nd October 201539
CURRENT STATUS & NEXT STEPS
THE FORCE IS STRONG IN THIS ONE
1
2
3
PROPOSAL
to Apache incubator
VOTE
Open right now
ESTABLISH
Incubation project
4
5
6
MOVE CODEBASE
From Github to Apache
Git repository
GROW COMMUNITY
We need you!
WORK
On first projectrelease
APACHE UNOMI IN-DEPTH I 2nd October 201540
COMMERCIAL APPLICATIONS
COMPLETELY GRATUITOUS PLUG
Build your own !
It’s the beauty
of the Apache
License !
First (known) application
Jahia Marketing Factory
APACHE UNOMI IN-DEPTH I 2nd October 201541
TAKING SOME RISKS LIVE
DEMO
JAHIA MARKETING FACTORY + UNOMI
AN EXAMPLE APPLICATION
APACHE UNOMI IN-DEPTH I 2nd October 201542
YOUR TURN
HAVE YOU BEEN READING THESE ?
Q & A
APACHE UNOMI IN-DEPTH I 2nd October 201543
LEARN MORE
THANK YOUSO MUCHFOR YOUR ATTENTION !
Incubation proposal
https://wiki.apache.org/incubator/UnomiProposal
Unomi Github repository
https://github.com/Jahia/unomi
Jahia Marketing Factory
https://www.jahia.com/products/marketing-factory

Apache Unomi In Depth - ApacheCon EU 2015 Session

  • 1.
    APACHE UNOMI IN-DEPTHI 2nd October 20151 APACHE UNOMI IN-DEPTH SERGE HUBER, CTO & Co-founder, shuber@jahia.com
  • 2.
    APACHE UNOMI IN-DEPTHI 2nd October 20152 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  • 3.
    APACHE UNOMI IN-DEPTHI 2nd October 20153 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  • 4.
    APACHE UNOMI IN-DEPTHI 2nd October 20154 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  • 5.
    APACHE UNOMI IN-DEPTHI 2nd October 20155 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  • 6.
    APACHE UNOMI IN-DEPTHI 2nd October 20156 HISTORY NOT SO LONG AGO, IN A GALAXY NOT SO FAR AWAY…
  • 7.
    APACHE UNOMI IN-DEPTHI 2nd October 20157 INTRODUCING UNOMI YOU KNOW ME ? WHAT IS UNOMI?
  • 8.
    APACHE UNOMI IN-DEPTHI 2nd October 20158 TARGETED FUNCTIONALITIES MARKETING TO MARKETERS UNOMI User tracking Event tracking Goal tracking, scoring Segmentation Form Input tracking Download tracking Impersonification (personas) A/B testing Profile (visitor,contact,leads) management and export Reporting Privacy management
  • 9.
    APACHE UNOMI IN-DEPTHI 2nd October 20159 ARCHITECTURE DESIGN GOALS FROM LESSONS LEARNED THE HARD WAY 1 2 3 Avoid putting additional load on the WCMnodes Highly scalable (avoiding node cross-talk) Make it easy for users to define and use marketing segments 4 5 6 Integration with existing analytics Integration with multiple systems including mobile apps, not just WCM Highly pluggable architecture, making it easy to extend and build differentsolutions based on a common core
  • 10.
    APACHE UNOMI IN-DEPTHI 2nd October 201510 SCALING ARCHITECTURE THROWING MORE SERVERS AT THE PROBLEM CONTEXT SERVER CMS Issue trackingCRMSocial
  • 11.
    APACHE UNOMI IN-DEPTHI 2nd October 201511 INPUT/OUTPUT RULES ACTIONS Protocols HTTP REST + JSON SEGMENTSEVENTS CONTEXT CONDITIONS PROFILES MUST REFRAIN… NO JOKES ON I/O CONTEXT SERVER
  • 12.
    APACHE UNOMI IN-DEPTHI 2nd October 201512 REQUEST FLOW HEY LOOKI HAVE ARROWS Load HTML page Load HTML +JS to connectContextServer Load context.js Context for currentrequest (Optional)Load contentbased on context (Optional)Send event such as login / hover BROWSER CMS CONTEXT SERVER JS callbacks
  • 13.
    APACHE UNOMI IN-DEPTHI 2nd October 201513 CONTEXT EXAMPLE digitalData = { "loaded": true, "user": [{ "profiles": [{ "profileInfo": { "profileId": "d6454520-f2b6-40b7-829c-d17214f209d1”, "firstName": "Serge", "lastName": "Huber”, "userName": "Serge Huber", "email": "bhillou@yahoo.com", "gender": "male”, "itemClass": "org.oasis_open.context.server.api.User", "segments": ["alwaysTrue", "maleGender"] } }] }]}; FOR THE JSON ADDICTS LIKE ME
  • 14.
    APACHE UNOMI IN-DEPTHI 2nd October 201514 UNOMI ARCHITECTURE LOTS OF BOXES APACHEKARAF PERSISTENCE IMPLEMENTATION(ELASTICSEARCH, …) PERSISTENCE SPI(SERVICE PROVIDER INTERFACE) APACHE CXF REST API OSGISERVICES
  • 15.
    APACHE UNOMI IN-DEPTHI 2nd October 201515 UNOMI SERVICES STUFF THAT ACTUALLY DOES STUFF PROFILES Managesprofilesandpersonas (loading,updating,saving, deleting,merging, …) PRIVACY Managesprivacy (anonymous browsing,event filtering,profile deletion) QUERIES Performs queries againstthe stored data(events,profiles,…) SEGMENTS Managessegments(definitions, loading,saving,scoring) DEFINITIONS Managespropertytypes, conditiontypes,actionstypes, tags andother metadata CLUSTERING Managesthe clusterof context servers
  • 16.
    APACHE UNOMI IN-DEPTHI 2nd October 201516 VISITOR PROFILES YOU KNOW ME, I GET IT ! A profile is createdas soon as a visitor arriveson a site Trackedby navigator cookies Populated through events, such as page views,CMS login, Social login, mobile action, beacon detectedor form submissions Sessions are tracked for each profile,history of navigation is accessible too.
  • 17.
    APACHE UNOMI IN-DEPTHI 2nd October 201517 SEGMENTS I’M A PERSON NOT A SEGMENT Built through simple UI Conditions match user profile properties Potentially complex assembly of conditions Example Profilesyounger than 25 and have an incomeof more than USD 100’000 (young rich segment)
  • 18.
    APACHE UNOMI IN-DEPTHI 2nd October 201518 EVENTS I DID WHAT WHEN ? Client or server-side eventscanbe sent to the context server,intheory in very high volume The context server willprocessthe eventsusing plugins, either synchronously or asynchronously (for example using an Apache Mahout BigData analysis cluster) Example: login eventsends additional user data, page vieweventused to build user or general analytics, mouse over eventcan be used to build content heat maps Sample request:
GET http://wemicontext.name:8181/eventcollector/view?url=PAGE_URL&referr er=REFERRER_URL (referrer isdifferentfor AJAX requests so we use the document.referrer to build thisrequest)
  • 19.
    APACHE UNOMI IN-DEPTHI 2nd October 201519 IMPERSONIFICATIONS (PERSONAS) FOR WHEN YOU WISH YOUWERE SOMEONE ELSE ⎯ Persona definition make it possible to “emulate” a certain type of profile, e.g : US visitor, non-US visitor, search engine bot, … ⎯ Predefined personas as well as persona editing UIavailable ⎯ Jahia provides a side-panel UI to view profile and session data for both the current profile or switch between available personas and see immediate personalization changes
  • 20.
    APACHE UNOMI IN-DEPTHI 2nd October 201520 RULES ONE SERVER TO RULE THEM ALL ⎯ Executed mostly on event triggers ⎯ Use same conditions are segments to match events ⎯ May perform a list of actions (update profile, session, send email)
  • 21.
    APACHE UNOMI IN-DEPTHI 2nd October 201521 RULES, CONTINUED ANOTHER RULE : YOUSHOULD LISTEN TO THE SPEAKER INSTEAD OF READING THESE ⎯ Conditions evaluate to a boolean that will determine if the actions of the rule will be executed or not ⎯ Conditions may be complex, using operators such as and/or for building sub-conditions (condition tree) ⎯ Conditions and actions are either pre-defined or may be extended using Unomi plugins Structure: when conditions then actions Example: when login event is received then merge profiles based on login id
  • 22.
    APACHE UNOMI IN-DEPTHI 2nd October 201522 PROFILE MERGING BECAUSE MERGING PEOPLE DIDN’T WORK WELL AS A TITLE A single (physical) visitor may come to a website or web service using differentdevicesor browsers
  • 23.
    APACHE UNOMI IN-DEPTHI 2nd October 201523 PROFILE MERGING BECAUSE MERGING PEOPLE DIDN’T WORK WELL AS A TITLE Each visit will (initially) generate a separate profile ID Upon visitor identication (usually after login), the current profile will be merge with any existing profiles with the same identifier Tracking cookies will be modified to associated with the identifier of the mergedprofile Recognized visitors will therefore be trackedacross devices,as the same profile instead of differentones
  • 24.
    APACHE UNOMI IN-DEPTHI 2nd October 201524 PLUGINS NOT THAT TYPE OF PLUG, COME ON Custom conditions to be usedin segments or rules Custom actions to be used in rules Custom session or profile property definitions Resource bundles Predefinedrules Predefinedsegments Predefinedscoring PLUGINS MAY INCLUDEPlugins are OSGi bundles that may extend the built-in functionality of the Context Server
  • 25.
    APACHE UNOMI IN-DEPTHI 2nd October 201525 PLUGIN EXAMPLE YEAH SOME MORE JSON ! MAIL ACTIONPLUGIN ⎯ Defines a new custom action : send an email ⎯ Provides a Java implementation of the action ⎯ Provides a JSON descriptor to declare the action and it’s parameters to Unomi ⎯ Parameters will be used to build UI to edit the action instance { "id":  "sendMailAction", "actionExecutor":  "sendMail", "tags":  [  "event"  ], "parameters":  [ { "id":  "from", "type":  "string", "multivalued":  false }, { "id":  "to", "type":  "string", "multivalued":  false }, { "id":  "cc", "type":  "string", "multivalued":  false },
  • 26.
    APACHE UNOMI IN-DEPTHI 2nd October 201526 PLUGIN EXAMPLE YEAH SOME MORE JSON ! { "id":  "bcc", "type":  "string", "multivalued":  false }, { "id":  "subject", "type":  "string", "multivalued":  false }, { "id":  "template", "type":  "string", "multivalued":  false, "defaultValue":  "Hello  $profile.properties.("j:firstName")$   $profile.properties.("j:lastName")$,nHoware  you  doing  today?" } ] }
  • 27.
    APACHE UNOMI IN-DEPTHI 2nd October 201527 PERSISTENCE SAVING THOSE PRECIOUS MOMENTS ⎯ Service Provider Interface ⎯ Default implementation : ElasticSearch ⎯ ElasticSearch providesout of the box : ⎯ NoSQL JSON document storage ⎯ Built-in scaling and clustering ⎯ Separate nodes for data storage & query execution ⎯ Powerfulquery sub-system ⎯ Apache License
  • 28.
    APACHE UNOMI IN-DEPTHI 2nd October 201528 REST API EXPOSING OURSELVES TO THE OUTSIDE, CLEANLY FUNCTIONALITIES ⎯ Implemented using Apache CXF ⎯ REST + JSON protocol (no SOAP or other bindings to keepthings simple) ⎯ Exposes most ofUnomi’s built-in services ⎯ Protectedby Karaf container security ⎯ Will be standardized by OASIS Context Server specification ⎯ Can be used to either built administration UI or interface with third party systems
  • 29.
    APACHE UNOMI IN-DEPTHI 2nd October 201529 PRIVACY SERVICE YOU KNOW ME A BIT TOO MUCH ? FUNCTIONALITIES ⎯ Server andeventdiscovery ⎯ Currentvisitor profile access ⎯ Retrieving and setting list of eventsto may or may not be collectedfor currentprofile ⎯ Management of anonymous browsing, including anonymous collection activation or anonymizing ofpreviously collecteddata ⎯ Profile deletion 3RD PARTY UIS may be built to give end-userscontrol over their data.
  • 30.
    APACHE UNOMI IN-DEPTHI 2nd October 201530 ALGORITHMS DISCOVERING (BAD) HABBITS AND BEHAVIORS This is not yet implementedin Unomi… The Context Server can also integrate “algorithms”, meaning that data can be processed/mined to extract additional knowledge
  • 31.
    APACHE UNOMI IN-DEPTHI 2nd October 201531 ALGORITHMS OUR IDEAS RECOMMENDATION ENGINE SIMILARITY ENGINE APACHE MAHOUT INTEGRATION BIGDATA INTEGRATION
  • 32.
    APACHE UNOMI IN-DEPTHI 2nd October 201532 ALGORITHMS, CONTINUED EVEN BETTER TARGETING Open source reference implementation will also help guarantee interoperability Algorithms have the potential to make it much easier for integrators and developers to provide functionality to users of Unomi If/When OASISContext Server specification includes them, the potential for re- usability between implementation could be very interesting
  • 33.
    APACHE UNOMI IN-DEPTHI 2nd October 201533 CONNECTORS NO MORE INAPPROPRIATE JOKES PLEASE CUSTOM CONDITIONS maybe used to perform dynamic dataexchanges uponincoming events can perform calls toexternal services EXTERNAL SERVICES mayuse Unomi’s publicURLs or administrationURLs to access REST services (for querying,reporting, editing,etc) EXTERNAL SYSTEMS maypushdatainto Unomieither throughevents DIRECT ACCESS to ElasticSearch is alsopossible to directly interface with the persistence system CUSTOM ACTIONS
  • 34.
    APACHE UNOMI IN-DEPTHI 2nd October 201534 OASIS CONTEXT SERVERSTANDARD AN OVERVIEW WITH LOTS OF COMPETITORS Co-chairs Serge Huber (myself) Jahia Thomas Sigdestad Enonic Established technical committee in April 2015
  • 35.
    APACHE UNOMI IN-DEPTHI 2nd October 201535 OASIS CONTEXT SERVERSTANDARD MEMBER COMPANIES
  • 36.
    APACHE UNOMI IN-DEPTHI 2nd October 201536 OASIS CONTEXT SERVERSTANDARD GOOOOOOAAAAALLLLLSSSS ! PROVIDE ASTANDARD § A context server REST API § An associateddomainmodel § An opensource reference implementation(ApacheUnomi) APPROVED Makesure thatthe standardis basedonreal needs of theindustry DESIGNED FOR GREATNESS Not onlyCMS-specific, designed to integratewithas manytoolsas possible(CRM,ERP, mobile applications,…)
  • 37.
    APACHE UNOMI IN-DEPTHI 2nd October 201537 OASIS CONTEXT SERVERSTANDARD WORK ORGANIZATION AND STUFF DONE https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cxs Whole TCmeets once per month 2 workgroups meet once per week CURRENT STATUSMEETINGS ⎯ Use case listing & discussions : completion ⎯ Domain model definition : undergoing ⎯ REST API : to be done ⎯ Formal specification : to be done
  • 38.
    APACHE UNOMI IN-DEPTHI 2nd October 201538 INCUBATION PROPOSAL WHO TO BLAME J https://wiki.apache.org/incubator/UnomiProposal Champion Jean-Baptiste Onofré Talend Mentor Bertrand Delacretaz Adobe Mentor Roman Shaposchnik Pivotal Mentor ChrisMattmann NASA JPL
  • 39.
    APACHE UNOMI IN-DEPTHI 2nd October 201539 CURRENT STATUS & NEXT STEPS THE FORCE IS STRONG IN THIS ONE 1 2 3 PROPOSAL to Apache incubator VOTE Open right now ESTABLISH Incubation project 4 5 6 MOVE CODEBASE From Github to Apache Git repository GROW COMMUNITY We need you! WORK On first projectrelease
  • 40.
    APACHE UNOMI IN-DEPTHI 2nd October 201540 COMMERCIAL APPLICATIONS COMPLETELY GRATUITOUS PLUG Build your own ! It’s the beauty of the Apache License ! First (known) application Jahia Marketing Factory
  • 41.
    APACHE UNOMI IN-DEPTHI 2nd October 201541 TAKING SOME RISKS LIVE DEMO JAHIA MARKETING FACTORY + UNOMI AN EXAMPLE APPLICATION
  • 42.
    APACHE UNOMI IN-DEPTHI 2nd October 201542 YOUR TURN HAVE YOU BEEN READING THESE ? Q & A
  • 43.
    APACHE UNOMI IN-DEPTHI 2nd October 201543 LEARN MORE THANK YOUSO MUCHFOR YOUR ATTENTION ! Incubation proposal https://wiki.apache.org/incubator/UnomiProposal Unomi Github repository https://github.com/Jahia/unomi Jahia Marketing Factory https://www.jahia.com/products/marketing-factory