SlideShare a Scribd company logo
1 of 21
Download to read offline
Omni Commerce:
From Buzzword
to Technology


Jürgen Albertsen
Enterprise Architect
hybris
Commerce is Everywhere
TV
Console
Web
POS
Mobile
Call Center
Social
Print
Digital Ads
Marketplace
Mobile Native
A Few Examples
TV Mobile
+ + =
Live stream, shop as you
watch
Mobile
+ =
Want this, alert me when
near shop
Product
Product
Checkout
Location
POS
+ =
Not available in store,
deliver to home
Product Checkout
We call it
Multi Channel
No, Omni Channel
No, Omni Commerce
Nice word but:
How to do it?
The solution:
Web Services
of course
The Problem:
hybris is pretty
old mature
Core Services
Core / Jalo
Over theYears We Stacked up Quite a Stack
Commerce Services
Commerce Façades
Accelerator (Web Storefront) OCC (Web Services)
Let’s Zoom In
Controller
Converter
Service
Façade
DTO
Model
Populator
A DTO
public class CartData implements Serializable {
!
private String code;
private boolean net;
private PriceData totalPrice;
//...
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
!
//...
}
A Descriptor for DTOs
<bean class="de.hybris.platform.commercefacades.order.CartData">
<property name="code" type="String"/>
<property name="net" type="boolean"/>
<property name="totalPrice"
type="de.hybris.platform.commercefacades.product.PriceData"/>
<!-- ... -->
</bean>
A Façade
public interface CartFacade
{
!
CartData getSessionCart();
!
CartData getMiniCart();
!
CartModificationData addToCart(String code,
long quantity)
throws CommerceCartModificationException;
!
// ...
!
}
A Controller for the Storefront
@Controller
public class AddToCartController extends AbstractController
{
@Resource(name = "cartFacade")
private CartFacade cartFacade;
!
@RequestMapping(value = "/cart/add", method = RequestMethod.POST)
public String addToCart(@RequestParam("productCodePost") String code,
Model model, @Valid AddToCartForm form, BindingResult bindingErrors)
{
// ...
CartModificationData cartModification = cartFacade.addToCart(code, qty);
if (cartModification.getQuantityAdded() == 0L)
{
model.addAttribute(ERROR_MSG_TYPE,
"basket.information.quantity.noItemsAdded." +
cartModification.getStatusCode());
}
else if (cartModification.getQuantityAdded() < qty)
{
model.addAttribute(ERROR_MSG_TYPE,
"basket.information.quantity.reducedNumberOfItemsAdded." +
cartModification.getStatusCode());
}
// ..
}
}
Spring MVC doesn’t
care if it’s HTML,
XML, JSON, 

or whatever
Another Controller — this Time for a Web Service
@Controller
public class CartController extends BaseController
{
@Resource(name = "cartFacade")
private CartFacade cartFacade;
!
@RequestMapping(value = "/entry", method = RequestMethod.POST)
@ResponseBody
public CartModificationData addToCart(@RequestParam(required = true) String code,
@RequestParam(required = false, defaultValue = "1") long qty)
throws CommerceCartModificationException
{
return cartFacade.addToCart(code, qty);
}
!
}
Marshal Response DTOs to XML/JSON
<!-- from springmvc-servlet.xml -->
!
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean parent="resolverXStreamJSONConverter"/>
<bean parent="resolverXStreamXmlConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
We expose 

commerce logic 

and data model 1:1
What Else?
REST-like
ETag
OAuth 2.0 & HTTPS
Template
Shipped as source
Questions?
Beer?

More Related Content

Similar to Occ tech for commerce

How To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdfHow To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdfStoreHippo
 
Benefits of VoIP
Benefits of VoIPBenefits of VoIP
Benefits of VoIPpascom
 
Ism ecompany ecommerce software comparison
Ism ecompany  ecommerce software comparisonIsm ecompany  ecommerce software comparison
Ism ecompany ecommerce software comparisonvalantic NL
 
How To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdfHow To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdfStoreHippo
 
Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011Chanho Lee
 
2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair Oildfield2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair OildfieldEmeldi Group
 
Retail Pro POS v8, v9, Prism Ecommerce Integration
 Retail Pro POS v8, v9, Prism Ecommerce Integration Retail Pro POS v8, v9, Prism Ecommerce Integration
Retail Pro POS v8, v9, Prism Ecommerce Integration24Seven Commerce
 
Pyrotechnic Software Systems Profile
Pyrotechnic Software Systems ProfilePyrotechnic Software Systems Profile
Pyrotechnic Software Systems Profilenplasar
 
Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)Philippe Humeau
 
Digital transformation and customer care
Digital transformation and customer careDigital transformation and customer care
Digital transformation and customer careMiguel Mello
 
Getting Started In Digital Signage
Getting Started In Digital SignageGetting Started In Digital Signage
Getting Started In Digital SignageDave Haar
 
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel JedrzejewskiPROIDEA
 
10 Business people make their voices heard
10 Business people make their voices heard10 Business people make their voices heard
10 Business people make their voices heardGreg Eicke
 

Similar to Occ tech for commerce (20)

How To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdfHow To Choose The Best Marketplace Platform.pdf
How To Choose The Best Marketplace Platform.pdf
 
Benefits of VoIP
Benefits of VoIPBenefits of VoIP
Benefits of VoIP
 
Ism ecompany ecommerce software comparison
Ism ecompany  ecommerce software comparisonIsm ecompany  ecommerce software comparison
Ism ecompany ecommerce software comparison
 
How To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdfHow To Find The Best Multi Vendor Ecommerce Software.pdf
How To Find The Best Multi Vendor Ecommerce Software.pdf
 
Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011Ip.Digital.Signage(Eng).102011
Ip.Digital.Signage(Eng).102011
 
2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair Oildfield2016.05 Liferay Webinar, Alistair Oildfield
2016.05 Liferay Webinar, Alistair Oildfield
 
Ecommerce Development
Ecommerce DevelopmentEcommerce Development
Ecommerce Development
 
Ecommerce Development
Ecommerce DevelopmentEcommerce Development
Ecommerce Development
 
Retail Pro POS v8, v9, Prism Ecommerce Integration
 Retail Pro POS v8, v9, Prism Ecommerce Integration Retail Pro POS v8, v9, Prism Ecommerce Integration
Retail Pro POS v8, v9, Prism Ecommerce Integration
 
Nestosh portfolio
Nestosh portfolioNestosh portfolio
Nestosh portfolio
 
Force Platform
Force PlatformForce Platform
Force Platform
 
Pyrotechnic Software Systems Profile
Pyrotechnic Software Systems ProfilePyrotechnic Software Systems Profile
Pyrotechnic Software Systems Profile
 
Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)Benchmark of ecommerce solutions (short version, english)
Benchmark of ecommerce solutions (short version, english)
 
Digital transformation and customer care
Digital transformation and customer careDigital transformation and customer care
Digital transformation and customer care
 
Open Telco API
Open Telco APIOpen Telco API
Open Telco API
 
Getting Started In Digital Signage
Getting Started In Digital SignageGetting Started In Digital Signage
Getting Started In Digital Signage
 
Inovent
InoventInovent
Inovent
 
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
4Developers 2015: Sylius - E-Commerce framework for PHP - Pawel Jedrzejewski
 
10 Business people make their voices heard
10 Business people make their voices heard10 Business people make their voices heard
10 Business people make their voices heard
 
Ecommerce
EcommerceEcommerce
Ecommerce
 

More from Neoworks

Search relevancy
Search relevancySearch relevancy
Search relevancyNeoworks
 
Search refinement
Search refinementSearch refinement
Search refinementNeoworks
 
Payments nick
Payments nickPayments nick
Payments nickNeoworks
 
Neoworks research
Neoworks researchNeoworks research
Neoworks researchNeoworks
 
Delivery method
Delivery methodDelivery method
Delivery methodNeoworks
 

More from Neoworks (7)

Search relevancy
Search relevancySearch relevancy
Search relevancy
 
Search refinement
Search refinementSearch refinement
Search refinement
 
Payments nick
Payments nickPayments nick
Payments nick
 
Payments
PaymentsPayments
Payments
 
Neoworks research
Neoworks researchNeoworks research
Neoworks research
 
Delivery method
Delivery methodDelivery method
Delivery method
 
Shutl
ShutlShutl
Shutl
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceIES VE
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...caitlingebhard1
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data SciencePaolo Missier
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityVictorSzoltysek
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 

Recently uploaded (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 

Occ tech for commerce

  • 1. Omni Commerce: From Buzzword to Technology 
 Jürgen Albertsen Enterprise Architect hybris
  • 2. Commerce is Everywhere TV Console Web POS Mobile Call Center Social Print Digital Ads Marketplace Mobile Native
  • 3. A Few Examples TV Mobile + + = Live stream, shop as you watch Mobile + = Want this, alert me when near shop Product Product Checkout Location POS + = Not available in store, deliver to home Product Checkout
  • 7. Nice word but: How to do it?
  • 9. The Problem: hybris is pretty old mature
  • 10. Core Services Core / Jalo Over theYears We Stacked up Quite a Stack Commerce Services Commerce Façades Accelerator (Web Storefront) OCC (Web Services)
  • 12. A DTO public class CartData implements Serializable { ! private String code; private boolean net; private PriceData totalPrice; //... public String getCode() { return code; } public void setCode(String code) { this.code = code; } ! //... }
  • 13. A Descriptor for DTOs <bean class="de.hybris.platform.commercefacades.order.CartData"> <property name="code" type="String"/> <property name="net" type="boolean"/> <property name="totalPrice" type="de.hybris.platform.commercefacades.product.PriceData"/> <!-- ... --> </bean>
  • 14. A Façade public interface CartFacade { ! CartData getSessionCart(); ! CartData getMiniCart(); ! CartModificationData addToCart(String code, long quantity) throws CommerceCartModificationException; ! // ... ! }
  • 15. A Controller for the Storefront @Controller public class AddToCartController extends AbstractController { @Resource(name = "cartFacade") private CartFacade cartFacade; ! @RequestMapping(value = "/cart/add", method = RequestMethod.POST) public String addToCart(@RequestParam("productCodePost") String code, Model model, @Valid AddToCartForm form, BindingResult bindingErrors) { // ... CartModificationData cartModification = cartFacade.addToCart(code, qty); if (cartModification.getQuantityAdded() == 0L) { model.addAttribute(ERROR_MSG_TYPE, "basket.information.quantity.noItemsAdded." + cartModification.getStatusCode()); } else if (cartModification.getQuantityAdded() < qty) { model.addAttribute(ERROR_MSG_TYPE, "basket.information.quantity.reducedNumberOfItemsAdded." + cartModification.getStatusCode()); } // .. } }
  • 16. Spring MVC doesn’t care if it’s HTML, XML, JSON, 
 or whatever
  • 17. Another Controller — this Time for a Web Service @Controller public class CartController extends BaseController { @Resource(name = "cartFacade") private CartFacade cartFacade; ! @RequestMapping(value = "/entry", method = RequestMethod.POST) @ResponseBody public CartModificationData addToCart(@RequestParam(required = true) String code, @RequestParam(required = false, defaultValue = "1") long qty) throws CommerceCartModificationException { return cartFacade.addToCart(code, qty); } ! }
  • 18. Marshal Response DTOs to XML/JSON <!-- from springmvc-servlet.xml --> ! <mvc:annotation-driven> <mvc:message-converters register-defaults="false"> <bean parent="resolverXStreamJSONConverter"/> <bean parent="resolverXStreamXmlConverter"/> </mvc:message-converters> </mvc:annotation-driven>
  • 19. We expose 
 commerce logic 
 and data model 1:1
  • 20. What Else? REST-like ETag OAuth 2.0 & HTTPS Template Shipped as source