Real World Products And Profiles - Lessons Learned From Complex Industries Tom LaStrange Chief...
-
Upload
ashlie-parrish -
Category
Documents
-
view
216 -
download
2
Transcript of Real World Products And Profiles - Lessons Learned From Complex Industries Tom LaStrange Chief...
Real World Products And Profiles - Lessons Learned From Complex Industries
Tom LaStrangeChief Architect, e-Commerce ApplicationsChannelPoint, Inc.
Agenda• The concept of a “Domain Server”• Identity and portal configuration• External product and pricing engines• Content management• Profile management• Campaigns and reports
Domain Server Approach
Product & PricingManagement
Content Management
Customer ProfileManagement
CustomerRelationship Mgmt
DynamoComponents
Portal / Identity Management
Price WizardsPrice Wizards
Needs PlannersNeeds Planners
Deep Profile Deep Profile GroupsGroups
Pre-packaged Pre-packaged Campaigns/ReportsCampaigns/Reports
Tagging Taxonomy& Content
Repositories
Complex Product & External Pricing
Interfaces
Automated & Usage Triggered
Scenarios
Complex ProfileRepository / Object Model
DomainServerComponents
Price Shopper ->Price Shopper ->Passive AdvicePassive Advice
Value Shopper -> Value Shopper -> Active AdviceActive Advice
Engaged Customer->Engaged Customer->Proactive AdviceProactive Advice
Loyal Customer ->Loyal Customer ->Trusted AdviceTrusted Advice
The Right InformationThe Right Information
At The Right TimeAt The Right Time
To The Right PeopleTo The Right People
Right Products AndRight Products And
Revenue/YieldRevenue/Yield
UserExperience
Identity/Portal Management• Entire site configured through a
“ResourceCatalog”• ResourceBundle based architecture –
supports multiple locales• Adds another dimension called “portal”
• Inheritance mechanism allows portals to inherit base properties and override properties unique to their requirements
Identity Configuration Options• Strings, images• Page layout – Components on a page,
navigation context• “Skin” definition – images, HTML “chunks”
and component droplets• Error messages• Help text
Identity Configuration Tiers• Re-branding
• Take an existing skin and home page and add a custom logo and header image – Simple – no programmer involvement
• Re-skinning • Keep the existing layout and interaction model and replace
images and style sheet – Easy – minimal programmer involvement• Re-structuring
• Change page layout and interaction model – Involved – requires varying level of JHTML component rewrite
• Current skin components: 42 files, 1100 lines of JHTML code• Custom home pages
• Home pages are standalone components – allows per portal differentiation
Any Combination of the
above!
Portal Configuration Options• Any of the previously mentioned Identity
Configuration options• Product line mix and ordering - any
combination and order for auto, home, and life insurance lines of business
• Targeters – no hard coded targeter references allow portals to use defaults or define their own
• Physical properties of the site, e.g., external system URLs, IP addresses
Identity/Portal Examples
“blueice” skin with 3 lines of business ordered auto, home, and life
“neutral” skin with 2 lines of business ordered life and auto
Identity/Portal Examples
“blueice” skin with 3 lines of business ordered auto, home, and life
“neutral” skin with 2 lines of business ordered life and auto
Identity/Portal Examples
“blueice” skin with 3 lines of business ordered auto, home, and life
“neutral” skin with 2 lines of business ordered life and auto
Identity/Portal Examples
“blueice” targeted email “neutral” targeted email
External Product & Pricing Engines
• Interact, “siphon”, and store external data
• More/better personalization
• More/better form pre-population
Dynamo ServerDynamo ServerDAS, DPS, DSSDAS, DPS, DSS
Domain Server Domain Server ComponentsComponents
External Engine 1External Engine 1 External Engine 2External Engine 2
DatabaseDatabase DatabaseDatabase DatabaseDatabase
HTML / HTTPHTML / HTTP
XML / HTTPXML / HTTP
Sip
ho
nS
iph
on
Web ServerWeb Server
Data Maps and Siphoning• Specifies attribute map between objects and external
systems• During object creation – cloning, pre-population of dissimilar
types• During external system interaction – siphon data out of HTTP
requests and populate object model• During external system initialization – pre-population
• Example – Object to Object/com/channelpoint/ddk/helpers/user.addressPrimary.zipCode=/com/channelpoint/ddk/helpers/vehicleQuote.zipCode/com/channelpoint/ddk/helpers/user.addressPrimary.state=/com/channelpoint/ddk/helpers/vehicleQuote.state/com/channelpoint/ddk/helpers/user.nameFirst=/com/channelpoint/ddk/helpers/vehicleQuote.drivers[idx:0].name/com/channelpoint/ddk/helpers/user.sex=/com/channelpoint/ddk/helpers/vehicleQuote.drivers[idx:0].sex
• Example – Object to External System/com/channelpoint/ddk/helpers/vehicleQuote.applicant.employmentStatus=32:INPUTS:0:0/com/channelpoint/ddk/helpers/vehicleQuote.applicant.employmentCurrentYears=33:INPUTS:0:0/com/channelpoint/ddk/helpers/vehicleQuote.drivers[idx:0].sex=30002:INPUTS:1:0/com/channelpoint/ddk/helpers/vehicleQuote.drivers[idx:0].maritalStatus=30003:INPUTS:1:0/com/channelpoint/ddk/helpers/vehicleQuote.driversTotal=1245361:INPUTS:0:0/com/channelpoint/ddk/helpers/vehicleQuote.zipCode=92:INPUTS:0:0
Content Management• Multiple content repositories
• HTML: Static content, Articles• XML: Tools: planners, pricing
engines, calculators• Content Tagging Taxonomy
• Comprehensive scheme to tag insurance and financial services content
• 33 tagging dimensions• Locale, line of business, life events, life roles, age groups, etc.
• Content groups created and managed through re-branded DCC
• Huge selling point for the business owner!
Content Management
Complex Profile Repository• Based completely on D5 SQL Repository, no Relational Views
• 32 Objects – 728 Attributes with 1-to-1 and 1-to-many relationships• Modeled in MS Excel (really!) saved as CSV’s
• Defining “Deep” profile groups• Profile groups utilizing attributes of these complex object
relationships• Example: “Parents of teenage drivers”
• User with any dependents whose age is greater than 14 and less than 20 –or-any auto quotes run that include drivers whose age greater than 14 and less than 20
• Problems – No way to WYSIWYG create/edit these “deep” groups through the DCC
CSV’s
ResourceCatalog labels
userProfile.xml userProfile.sql
MRIHelper beans
Deep Profile Group Example - Look at it later
<ruleset>\ <accepts>\ <rule op=and tag="Show">\ <rule op=and tag="Content">\ <rule op=any tag="ContentSources">\ </rule>\ <rule op=and tag="ContentConditions">\ <rule op=or>\ <rule op="includesItem">\ <valueof target="dependents">\ <rule op=and>\ <rule op="gt">\ <valueof target="ageComputed">\ <valueof constant="14">\ </rule>\ <rule op="lt">\ <valueof target="ageComputed">\ <valueof constant="20">\ </rule>\ </rule>\ </rule>\ <rule op="includesItem">\ <valueof target="vehicleQuotes">\ <rule op="includesItem">\ <valueof target="drivers">\ <rule op=and>\ <rule op="gt">\ <valueof target="age">\ <valueof constant="14">\ </rule>\ <rule op="lt">\ <valueof target="age">\ <valueof constant="20">\ </rule>\ </rule>\ </rule>\ </rule>\ </rule>\ </rule>\ </rule>\ </rule>\ </accepts>\
</ruleset>
Check dependents whose age is > 14 and < 20
Look at vehicleQuote objects in the vehicleQuotes Set
Check drivers on vehicleQuote whose age is > 14 and < 20
“or” the results of the next two rules
“Parents of teenage drivers” profile group
Repository Manipulation – Part 1
• Problem – How to handle dynamic, complex object relationships while writing minimal (in most cases, no) code
• MRIHelper base class – MutableRepositoryItem Helper• Mechanism to create, update, and delete objects• 1-many collection management – as objects are created
and deleted the collections they belong to are updated• XML serialization
• Provides import/export capabilities of object relations• More…
Repository Manipulation – Part 2
• MRIHelper base class – MutableRepositoryItem Helper• Cloning and pre-population
• “Deep” cloning of objects of the same type• Pre-population of objects of dissimilar types
• Object creation• Always look for a data map to pre-populate from the “user” object• Then clone or pre-populate from another source• Example – vehiclePlanner -> vehicleQuote• Pre-populates “vehicleQuote” from “user” then “vehiclePlanner”
• “Helper” beans created for each repository object• Provides typed setters and getters• Getters for ResourceCatalog labels and multi-choice options• Allows subclassing to encapsulate business logic
Repository Manipulation – Part 3
• Request scoped operation• Context of operation specified through request
parameters• oi = id of the object to operate on• ot = object type• op = operation – (c)reate, (u)pdate, (d)elete• bi = id of the base object, the collection owner• bt = base object type• bs = base set name
• Each request also verifies that the current user/session actually owns the object
• Prevents object ID guessing/spoofing
Repository Manipulation – Part 4
• Example Request<input type="hidden" name="oi“ value="cc1ef67db92d">
<input type="hidden" name="ot" value="vehicleQuote">
<input type="hidden" name="op" value="u">
<input type="hidden" name="bi" value="1e46ef3bc">
<input type="hidden" name="bt" value="user">
<input type="hidden" name="bs" value="vehicleQuotes">
• Meaning:• (u)pdate vehicleQuote with id==“cc1ef67db92d” that
is stored in the set called vehicleQuotes owned by the user with id==“1e46ef3bc”
Customer Management• “Super user” control through the Control Center
• Role based access - to user profile, scenario management, etc.
• Can inspect, follow, and change any object in the system
Customer Management
Customer Management• ConsumerSuite CSR view
• Uses the same role based access provided by the Control Center• Provides a subset of capabilities available through the Control
Center• Streamlined actions specific to ConsumerSuite• Assist customers in completing quotes and planners• One screen display of all critical information, minimal “decoration”• Provides streamlined keyboard navigation• Account search with wildcarding• User name, first name, last name, postal code• Allows opening a user session at different “jump-in” points
• Profile, quote, planner, …
Customer Management
Campaigns and Reports• Campaigns needed to move users into the “Loyal” tier• Reporting needed for business owner to drive campaigns• DSS gives us most of the tools off the shelf
• Utilizing “deep” profile groups + site interaction to drive campaigns
• Site interaction + custom events + data collectors enable reporting
• Site dropout rates• What users
are lookingat
Domain Server Approach
Product & PricingManagement
Content Management
Customer ProfileManagement
CustomerRelationship Mgmt
DynamoComponents
Portal / Identity Management
Price WizardsPrice Wizards
Needs PlannersNeeds Planners
Deep Profile Deep Profile GroupsGroups
Pre-packaged Pre-packaged Campaigns/ReportsCampaigns/Reports
Tagging Taxonomy& Content
Repositories
Complex Product & External Pricing
Interfaces
Automated & Usage Triggered
Scenarios
Complex ProfileRepository / Object Model
DomainServerComponents
Price Shopper ->Price Shopper ->Passive AdvicePassive Advice
Value Shopper -> Value Shopper -> Active AdviceActive Advice
Engaged Customer->Engaged Customer->Proactive AdviceProactive Advice
Loyal Customer ->Loyal Customer ->Trusted AdviceTrusted Advice
The Right InformationThe Right Information
At The Right TimeAt The Right Time
To The Right PeopleTo The Right People
Right Products AndRight Products And
Revenue/YieldRevenue/Yield
UserExperience
Questions?Contact us at:
Tom LaStrange [email protected] architecture, Java, JHTML
Monty Hammontree [email protected] interaction model, content tagging, grouping, targeters