SlideShare a Scribd company logo
AEM Commerce Framework
Paolo Mottadelli - Sr. Mgr. Technical Marketing
@paolomoz
Adobe® Marketing Cloud
Adobe® Experience Manager
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Architecture of the framework
1
Commerce Integrated Platform
JCR repo product DB
Experience Manager PIM/ecommerce
surfer
content editor PIM editor
1 2
PIM synch
3
4
dynamic PIM
Commerce Integrated Platform
surfer
content editor PIM editor
1. Product display component
2. Shopping cart
3. Promotions and vouchers
4. Catalog blueprints
5. Check-out
6. Search
1. Product information integrity
2. Pricing
3. Stock-keeping inventory
4.Variations on shopping cart
AEM eCommerce Integration Modules
1. The integration framework (API used for eCommerce implementations)
2. AEM native (JCR) implementation
3. hybris implementation
4. A number of out-of-the-box AEM components
5. Search (AEM, eCommerce, 3rd party)
6. Catalog management
7. Promotions management
8. Client context cart store
JCR repo product DB
Experience Manager PIM/ecommerce
Architecture of the Commerce Framework
AEM Commerce API
Implementation
AEM Commerce Components
AEM native impl
JCR Repository
hybris impl
hybris DB
other impl
other
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Commerce providers
With code samples
2
eCommerce Engine Selection
CommerceService commerceService =
resource.adaptTo(CommerceService.class);
CommerceSession session =
commerceService.login(slingRequest, slingResponse);
Product baseProduct = resource.adaptTo(Product.class);
GeoImpl
(geometrixx)
hybrisImpl
(hybris)
otherImpl
(xyz)
Site Component
OSGi container
bundle
bundlebundle
cq:commerceProvider = geometrixx
1
2
3
Custom Commerce Provider: code samples
TrainingCommerceServiceFactory
@Component(metatype = true, label = "Day CQ Commerce Factory for Training")
@Service
@Properties(value = {
@Property(name = "service.description", value = "Factory for training commerce service"),
@Property(name = "commerceProvider", value = "training")
})
public class TrainingCommerceServiceFactory extends AbstractJcrCommerceServiceFactory implements
CommerceServiceFactory {
	 public CommerceService getCommerceService(Resource res) {
	 	 return new TrainingCommerceServiceImpl(getServices(), res);
	 }
}
Commerce Factory OSGi configuration
TrainingCommerceServiceImpl
public class TrainingCommerceServiceImpl extends AbstractJcrCommerceService implements
CommerceService {
[...]
	 public CommerceSession login(SlingHttpServletRequest request,
	 	 	 SlingHttpServletResponse response) throws CommerceException {
	 	 return new TrainingCommerceSessionImpl(this, request, response, resource);
	 }
public Product getProduct(final String path) throws CommerceException {
[...] return new TrainingProductImpl(resource); [...]
}
TrainingCommerceSessionImpl
public class TrainingCommerceSessionImpl extends AbstractJcrCommerceSession {
	 [..]
	
}
TrainingCommerceSessionImpl
public class TrainingCommerceSessionImpl extends AbstractJcrCommerceSession {
	 protected void loadCart()
protected void saveCart()
public String getProductPrice(Product product)
public String getCartPrice(Predicate filter)
protected void doAddCartEntry(Product product, int quantity)
protected void calcCart()
public List<Promotion> getActivePromotions()
protected void calcOrder()
	
}
TrainingCommerceServiceFactory
public class TrainingProductImpl extends AbstractJcrProduct {
[...]
	 public String getSKU() {
	 	 return "todo-get-sku-method";
	 }
}
eCommerce Engine Selection
CommerceService commerceService =
resource.adaptTo(CommerceService.class);
CommerceSession session =
commerceService.login(slingRequest, slingResponse);
Product baseProduct = resource.adaptTo(Product.class);
GeoImpl
(geometrixx)
hybrisImpl
(hybris)
trainingImpl
(training)
Site Component
OSGi container
bundle
bundlebundle
cq:commerceProvider = training
1
2
3
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
(more on) CommerceSession
With code samples
3
•updateOrderDetails(Map<String, String> orderDetails);
•getOrderDetails();
•submitOrder();
CommerceSession responsibilities
• addCartEntry(Product product, int quantity);
• modifyCartEntry(int entryNumber, int quantity);
• deleteCartEntry(int entryNumber);
•updateOrderDetails(Map<String, String> orderDetails);
•getOrderDetails();
•submitOrder();
cart content
pricing
order details
1
2
3
•getPromotions();
•addVoucher(String code);
•removeVoucher(String code);
promotions3
CommerceSession is RESTful style (1)
CommerceSession is RESTful style (2)
ORDER%3a%3dorderId%253d9c1346bf-3813-4205-80ec-2fdfd1644143%7cCART%3a
%3dquantity3%253d1%252cquantity0%253d1%252cquantity1%253d1%252cpromotionCoun
t%253d2%252cquantity2%253d1%252cvoucherCount%253d0%252cpromotion1%253d
%252fcontent%252fcampaigns%252fgeometrixx-outdoors%252fcosy-up-to-winter
%252fwinter-female%252fcosy-companions%252cpromotion0%253d%252fcontent
%252fcampaigns%252fgeometrixx-outdoors%252fbig-spender
%252fordervalueover100%252ffree-shipping%252cproduct3%253d%252fcontent
%252fgeometrixx-outdoors%252fen%252fequipment%252fskiing%252fhalifax-winter
%252fjcr%253acontent%252fpar%252fproduct%252cproduct0%253d%252fcontent
%252fgeometrixx-outdoors%252fen%252fwomen%252fcoats%252fcalgary-winter%252fjcr
%253acontent%252fpar%252fproduct%252f397122-s%252cproduct2%253d%252fcontent
%252fgeometrixx-outdoors%252fen%252fseasonal%252fwinter%252fequipment
%252fkamloops-snow%252fjcr%253acontent%252fpar%252fproduct
%252f37924450-7%252centryCount%253d4%252cproduct1%253d%252fcontent
%252fgeometrixx-outdoors%252fen%252fequipment%252fskiing%252fkelowna-snow
%252fjcr%253acontent%252fpar%252fproduct%7c
Name: CommercePersistence, Host: geometrixx.com, Path: /
CommerceSession is RESTful style (3)
protected void loadCart() {
[...]
//
// Load cart from the cookie:
//
Map<String, String> cartStore = ContextSessionPersistence.getStore(request, "CART",
CommerceConstants.COMMERCE_COOKIE_NAME);
[...]
}
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Managing products
Includes solutions for scalability, performance, etc..
4
Products and Variants architecture:
- variant
- color: purple
- id: 397122.1
- variant
- size: S
- variant
- size: L
- variant
- size: M
- variant
- size: XL
- variant
- color: purple
-id: 397122.2
- price: 199
- variant
- size: S
- variant
- size: L
- variant
- size: M
- variant
- size: XL
- type: product
- axes: color, size
- id: 397122
- title: Saskatoon
- price: 299
1
1
1
1 1
1 1
1 1
1 1
Product interface
public interface Product extends Adaptable {
public String getPath(); // path to specific variation
public String getPagePath(); // path to presentation page for all variations
public String getSKU(); // unique ID of specific variation
public String getTitle(); // shortcut to getProperty(TITLE)
public String getDescription(); // shortcut to getProperty(DESCRIPTION)
public String getImageUrl(); // shortcut to getProperty(IMAGE_URL)
public String getThumbnailUrl(); // shortcut to getProperty(THUMBNAIL_URL)
public <T> T getProperty(String name, Class<T> type);
public Iterator<String> getVariantAxes();
public boolean axisIsVariant(String axis);
public Iterator<Product> getVariants(VariantFilter filter) throws CommerceException;
}
AxisFilter implements VariantFilter
public class AxisFilter implements VariantFilter {
...
public boolean includes(Product product) {
ValueMap values = product.adaptTo(ValueMap.class);
if(values != null) {
String v = values.get(axis, String.class);
return v != null && v == value;
}
return false;
}
}
Product Data admin UI
•Double click from Content Finder to open
•Based on Scaffolding
•Create/Change data in /etc/commerce/products
•Can change destination path from Scaffolding page
•Can navigate and change variants (overrides higher level data)
5.6.1
PIM Data & Product References
1
1
1
1 1
1 1
1 1
1 1
1 /etc/commerce/products 2 /content
Proxy Product Pages
make editable
2 nodes
10 nodes
5.6.1
Hardening Product Importer
•ROBUSTNESS: product importer more flexible with products/variants
•EXTENSIBILITY: abstracted-out common parts of product importer
•PERFORMANCE: importing 1000s products takes 80% less
•SCALABILITY: support flat hierarchies through bucketing, proxy pages, scalable search
5.6.1
Catalog Generation V2
•Regional Catalog support (based on MSM)
•Catalog Design Changes support
•Custom Catalog Pages support
•Blueprint & Catalog converter for 5.6.0 to current
5.6.1
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Shopping cart
5
Shopping Cart architecture (CommerceSession)
The CommerceSession performs add, remove, etc.
The CommerceSession also performs the various calculations on the cart.
The CommerceSession also applies vouchers and promotions that have fired to the cart.
Pricing modifiers:
- Quantity discounts.
- Different currencies.
- VAT-liable and VAT-free.
session.calcCart()
protected void calcCart() { ...
for (int i = 0; i < cart.size(); i++) { ...
for (Promotion p : promotions) {
try {
PromotionHandler ph = p.adaptTo(PromotionHandler.class);
PriceInfo discount = ph.applyCartEntryPromotion(this, p, entry);
if (discount != null && discount.getAmount().compareTo(BigDecimal.ZERO) > 0) {
... entry.calcPrices(); ...
} ...
cartTotalPrice = cartTotalPrice.add(entry.getPriceInfo(new PriceFilter("POST_TAX", currencyCode)).get(0).getAmount());
}
setPrice(new PriceInfo(cartPreTaxPrice, currency), "CART", "PRE_TAX");
setPrice(new PriceInfo(cartTax, currency), "CART", "TAX");
setPrice(new PriceInfo(cartTotalPrice, currency), "CART", "POST_TAX");
... }
Shopping Cart architecture (Storage)
In AEM-native carts are stored in the
ClientContext
Personalization should always be driven
through the ClientContext.
CommerceSession.addCartEntry()
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Checkout
6
Checkout architecture (order details)
Order details are not fixed by the API:
updateOrderDetails(Map<String, String> orderDetails);
Shipping options (and prices) depend on weight, delivery address, etc...
The CommerceSession owns shipping pricing; to retrieve and update delivery details:
updateOrder(Map<String, Object> delta)
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
7 Adobe &
hybris integration: product data flow
hybris:
Omni Commerce
Connect
CQ:
/etc/commerce/products
CQ:
/content/site
hybris importer catalog publishing
hybris integration: product data display
JCR repo
CQ
hybris
CQ hybris importer
CQ component volatile data
PIM data
hybris integration: user synchronisation
•Lazy import of hybris users into CQ
•Lazy creation of CQ users in hybris
•CQ stores hybris authentication data for later re-use
•Pluggable architecture for custom authentication schemes (SAML, OAuth)
hybris integration: customising the product import process
•Need to add PIM attributes? Extend HybrisResponseParser.
•Need to change the imported data hierarchy? Extend ImportHandler.
•Need to customize what services are called when importing data? Extend HybrisImporter.
hybris integration: customising the user import process
•ProfileSynchronizer#syncProfile is responsible for sync the user’s CQ profile to the respective
hybris account
hybris integration: customising product and price loading
•HybrisFactory#getProduct is responsible for creating Product instances
•HybrisSession#getProductPriceInfo is responsible for getting the correct price for a product for
the current user
hybris integration: how to install
AEM 5.6.1
3
cq-hybris-content 5.6.22
cq-hybris-server 5.6.01
cq-geometrixx-hybris-content 5.6.100
install packages
5.6.1
hybris with AEM 5.6.1
•Supports hybris 5.0
•hybris 5.0 server embedded by default
•Backward compatible with hybris 4.8.1
•Geometrixx-specific hybris connector
•Extend the default hybris components to a specific implementation;
•Remove internal references in the hybris components to allow for better extensibility
•hybris connector source code included in the content package
5.6.1
Geometrixx-specific hybris connector 5.6.1
Thank you

More Related Content

Viewers also liked

EVOLVE'14 | Maximize | Pashant Yadav | AEM 6 Tips
EVOLVE'14 | Maximize | Pashant Yadav | AEM 6 TipsEVOLVE'14 | Maximize | Pashant Yadav | AEM 6 Tips
EVOLVE'14 | Maximize | Pashant Yadav | AEM 6 Tips
Evolve The Adobe Digital Marketing Community
 
EVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak Search
EVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak SearchEVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak Search
EVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak Search
Evolve The Adobe Digital Marketing Community
 
EVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM Mistakes
EVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM MistakesEVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM Mistakes
EVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM Mistakes
Evolve The Adobe Digital Marketing Community
 
EVOLVE'14 | Maximize | Paul Legan | A Case Study in DAM
EVOLVE'14 | Maximize | Paul Legan | A Case Study in DAMEVOLVE'14 | Maximize | Paul Legan | A Case Study in DAM
EVOLVE'14 | Maximize | Paul Legan | A Case Study in DAM
Evolve The Adobe Digital Marketing Community
 
EVOLVE'15 | Maximize | Andy Lapin | Kelley Blue Book
EVOLVE'15 | Maximize | Andy Lapin | Kelley Blue BookEVOLVE'15 | Maximize | Andy Lapin | Kelley Blue Book
EVOLVE'15 | Maximize | Andy Lapin | Kelley Blue Book
Evolve The Adobe Digital Marketing Community
 
EVOLVE'13 | Enhance | Effective SEO | Paul Legan
EVOLVE'13 | Enhance | Effective SEO | Paul LeganEVOLVE'13 | Enhance | Effective SEO | Paul Legan
EVOLVE'13 | Enhance | Effective SEO | Paul Legan
Evolve The Adobe Digital Marketing Community
 
EVOLVE'16 | Keynote | Community Profile: Autodesk
EVOLVE'16 | Keynote | Community Profile: AutodeskEVOLVE'16 | Keynote | Community Profile: Autodesk
EVOLVE'16 | Keynote | Community Profile: Autodesk
Evolve The Adobe Digital Marketing Community
 
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
Evolve The Adobe Digital Marketing Community
 
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public SectorEVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
Evolve The Adobe Digital Marketing Community
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEMEVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
Evolve The Adobe Digital Marketing Community
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM  EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
Evolve The Adobe Digital Marketing Community
 
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
Evolve The Adobe Digital Marketing Community
 
EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?
EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?
EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?
Evolve The Adobe Digital Marketing Community
 
Evolve13 cq-commerce-framework
Evolve13 cq-commerce-frameworkEvolve13 cq-commerce-framework
Evolve13 cq-commerce-framework
Paolo Mottadelli
 
AEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkAEM (CQ) eCommerce Framework
AEM (CQ) eCommerce Framework
Paolo Mottadelli
 
Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...
Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...
Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...youngculture
 

Viewers also liked (20)

EVOLVE'14 | Maximize | Pashant Yadav | AEM 6 Tips
EVOLVE'14 | Maximize | Pashant Yadav | AEM 6 TipsEVOLVE'14 | Maximize | Pashant Yadav | AEM 6 Tips
EVOLVE'14 | Maximize | Pashant Yadav | AEM 6 Tips
 
EVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak Search
EVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak SearchEVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak Search
EVOLVE'14 | Enhance | Justin Edelson & Darin Kuntze | Demystifying Oak Search
 
EVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM Mistakes
EVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM MistakesEVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM Mistakes
EVOLVE'15 | Maximize | Mark Trenchard | Top 10 AEM Mistakes
 
EVOLVE'14 | Maximize | Paul Legan | A Case Study in DAM
EVOLVE'14 | Maximize | Paul Legan | A Case Study in DAMEVOLVE'14 | Maximize | Paul Legan | A Case Study in DAM
EVOLVE'14 | Maximize | Paul Legan | A Case Study in DAM
 
EVOLVE'15 | Maximize | Andy Lapin | Kelley Blue Book
EVOLVE'15 | Maximize | Andy Lapin | Kelley Blue BookEVOLVE'15 | Maximize | Andy Lapin | Kelley Blue Book
EVOLVE'15 | Maximize | Andy Lapin | Kelley Blue Book
 
EVOLVE'13 | Enhance | Effective SEO | Paul Legan
EVOLVE'13 | Enhance | Effective SEO | Paul LeganEVOLVE'13 | Enhance | Effective SEO | Paul Legan
EVOLVE'13 | Enhance | Effective SEO | Paul Legan
 
EVOLVE'13 | Customer Success Story | Life Technologies | Blair Hardie
EVOLVE'13 | Customer Success Story | Life Technologies | Blair HardieEVOLVE'13 | Customer Success Story | Life Technologies | Blair Hardie
EVOLVE'13 | Customer Success Story | Life Technologies | Blair Hardie
 
EVOLVE'13 | Enhance | External Search | Matthias Wermund
EVOLVE'13 | Enhance | External Search | Matthias WermundEVOLVE'13 | Enhance | External Search | Matthias Wermund
EVOLVE'13 | Enhance | External Search | Matthias Wermund
 
EVOLVE'13 | Enhance | Localization | Keith Brazil
EVOLVE'13 | Enhance | Localization | Keith BrazilEVOLVE'13 | Enhance | Localization | Keith Brazil
EVOLVE'13 | Enhance | Localization | Keith Brazil
 
EVOLVE'16 | Keynote | Community Profile: Autodesk
EVOLVE'16 | Keynote | Community Profile: AutodeskEVOLVE'16 | Keynote | Community Profile: Autodesk
EVOLVE'16 | Keynote | Community Profile: Autodesk
 
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
 
EVOLVE'13 | Customer Success Story | Mettler Toledo | Beth Seabloom
EVOLVE'13 | Customer Success Story | Mettler Toledo | Beth SeabloomEVOLVE'13 | Customer Success Story | Mettler Toledo | Beth Seabloom
EVOLVE'13 | Customer Success Story | Mettler Toledo | Beth Seabloom
 
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public SectorEVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEMEVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM  EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
 
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
 
EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?
EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?
EVOLVE'16 | Maximize | Thanesh Sadachcharan | AEM 6.2 - What is in it for you?
 
Evolve13 cq-commerce-framework
Evolve13 cq-commerce-frameworkEvolve13 cq-commerce-framework
Evolve13 cq-commerce-framework
 
AEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkAEM (CQ) eCommerce Framework
AEM (CQ) eCommerce Framework
 
Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...
Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...
Developing enterprise ecommerce solutions using hybris by Drazen Nikolic - Be...
 

Similar to EVOLVE'13 | Enhance | Ecommerce Framework | Paolo Mottadelli

AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integration
Lokesh BS
 
Intoduction commerceserver2009
Intoduction commerceserver2009Intoduction commerceserver2009
Intoduction commerceserver2009
Tarek Yehia
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerce
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerceEVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerce
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerce
Evolve The Adobe Digital Marketing Community
 
Introduction to Adobe Experience Manager based e commerce
Introduction to Adobe Experience Manager based e commerceIntroduction to Adobe Experience Manager based e commerce
Introduction to Adobe Experience Manager based e commerce
AdobeMarketingCloud
 
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java DevelopersOpen Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
cboecking
 
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Amasty
 
Folio3 - An Introduction to PHP Yii
Folio3 - An Introduction to PHP YiiFolio3 - An Introduction to PHP Yii
Folio3 - An Introduction to PHP Yii
Folio3 Software
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
 
E-Bazaar
E-BazaarE-Bazaar
E-Bazaar
ayanthi1
 
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and TricksIBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
Senturus
 
Ctools presentation
Ctools presentationCtools presentation
Ctools presentationDigitaria
 
James Jara Portfolio 2014 - Enterprise datagrid - Part 3
James Jara Portfolio 2014  - Enterprise datagrid - Part 3James Jara Portfolio 2014  - Enterprise datagrid - Part 3
James Jara Portfolio 2014 - Enterprise datagrid - Part 3
James Jara
 
Universal Migration Checklist for Developers.pdf
Universal Migration Checklist for Developers.pdfUniversal Migration Checklist for Developers.pdf
Universal Migration Checklist for Developers.pdf
Cart2Cart2
 
Fabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker PortfolioFabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker PortfolioFabian Rousselot
 
Simplifi commerce oracle atg commerce & endeca training
Simplifi commerce   oracle atg commerce & endeca trainingSimplifi commerce   oracle atg commerce & endeca training
Simplifi commerce oracle atg commerce & endeca training
Lokesh Kumar
 
SimplifiCommerce - Oracle ATG Commerce & Endeca Training - N
SimplifiCommerce - Oracle ATG Commerce & Endeca Training - NSimplifiCommerce - Oracle ATG Commerce & Endeca Training - N
SimplifiCommerce - Oracle ATG Commerce & Endeca Training - NLokesh Kumar
 
Simplifi commerce oracle atg commerce & endeca training - n
Simplifi commerce   oracle atg commerce & endeca training - nSimplifi commerce   oracle atg commerce & endeca training - n
Simplifi commerce oracle atg commerce & endeca training - n
Lokesh Kumar
 
Connecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in BluemixConnecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in Bluemix
IBM
 

Similar to EVOLVE'13 | Enhance | Ecommerce Framework | Paolo Mottadelli (20)

AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integration
 
Intoduction commerceserver2009
Intoduction commerceserver2009Intoduction commerceserver2009
Intoduction commerceserver2009
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerce
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerceEVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerce
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM based e-commerce
 
Introduction to Adobe Experience Manager based e commerce
Introduction to Adobe Experience Manager based e commerceIntroduction to Adobe Experience Manager based e commerce
Introduction to Adobe Experience Manager based e commerce
 
Open Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java DevelopersOpen Source ERP Technologies for Java Developers
Open Source ERP Technologies for Java Developers
 
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir Kalashnikau
 
ElasticPath
ElasticPathElasticPath
ElasticPath
 
Folio3 - An Introduction to PHP Yii
Folio3 - An Introduction to PHP YiiFolio3 - An Introduction to PHP Yii
Folio3 - An Introduction to PHP Yii
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
 
E-Bazaar
E-BazaarE-Bazaar
E-Bazaar
 
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and TricksIBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
IBM Cognos 10 Framework Manager Metadata Modeling: Tips and Tricks
 
Ctools presentation
Ctools presentationCtools presentation
Ctools presentation
 
James Jara Portfolio 2014 - Enterprise datagrid - Part 3
James Jara Portfolio 2014  - Enterprise datagrid - Part 3James Jara Portfolio 2014  - Enterprise datagrid - Part 3
James Jara Portfolio 2014 - Enterprise datagrid - Part 3
 
Universal Migration Checklist for Developers.pdf
Universal Migration Checklist for Developers.pdfUniversal Migration Checklist for Developers.pdf
Universal Migration Checklist for Developers.pdf
 
Fabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker PortfolioFabian Rousselot - Filemaker Portfolio
Fabian Rousselot - Filemaker Portfolio
 
Simplifi commerce oracle atg commerce & endeca training
Simplifi commerce   oracle atg commerce & endeca trainingSimplifi commerce   oracle atg commerce & endeca training
Simplifi commerce oracle atg commerce & endeca training
 
SimplifiCommerce - Oracle ATG Commerce & Endeca Training - N
SimplifiCommerce - Oracle ATG Commerce & Endeca Training - NSimplifiCommerce - Oracle ATG Commerce & Endeca Training - N
SimplifiCommerce - Oracle ATG Commerce & Endeca Training - N
 
Simplifi commerce oracle atg commerce & endeca training - n
Simplifi commerce   oracle atg commerce & endeca training - nSimplifi commerce   oracle atg commerce & endeca training - n
Simplifi commerce oracle atg commerce & endeca training - n
 
Connecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in BluemixConnecting Xamarin Apps with IBM Worklight in Bluemix
Connecting Xamarin Apps with IBM Worklight in Bluemix
 

More from Evolve The Adobe Digital Marketing Community

Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to AvoidEvolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM ProjectsEvolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve The Adobe Digital Marketing Community
 
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and TrendsEvolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve 19 | Gina Petruccelli | Let’s Dig Into RequirementsEvolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve The Adobe Digital Marketing Community
 
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe SenseiEvolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft AzureEvolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver EverywhereEvolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve The Adobe Digital Marketing Community
 
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go LiveEvolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve The Adobe Digital Marketing Community
 

More from Evolve The Adobe Digital Marketing Community (20)

Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
 
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
 
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to AvoidEvolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
 
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
 
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
 
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM ProjectsEvolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
 
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and TrendsEvolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
 
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
 
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
 
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
 
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve 19 | Gina Petruccelli | Let’s Dig Into RequirementsEvolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
 
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
 
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
 
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe SenseiEvolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
 
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
 
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft AzureEvolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
 
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver EverywhereEvolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
 
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
 
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
 
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go LiveEvolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
 

Recently uploaded

UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
UiPathCommunity
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 

Recently uploaded (20)

UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 

EVOLVE'13 | Enhance | Ecommerce Framework | Paolo Mottadelli

  • 1. AEM Commerce Framework Paolo Mottadelli - Sr. Mgr. Technical Marketing @paolomoz Adobe® Marketing Cloud Adobe® Experience Manager
  • 2. © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Architecture of the framework 1
  • 3. Commerce Integrated Platform JCR repo product DB Experience Manager PIM/ecommerce surfer content editor PIM editor 1 2 PIM synch 3 4 dynamic PIM
  • 4. Commerce Integrated Platform surfer content editor PIM editor 1. Product display component 2. Shopping cart 3. Promotions and vouchers 4. Catalog blueprints 5. Check-out 6. Search 1. Product information integrity 2. Pricing 3. Stock-keeping inventory 4.Variations on shopping cart
  • 5. AEM eCommerce Integration Modules 1. The integration framework (API used for eCommerce implementations) 2. AEM native (JCR) implementation 3. hybris implementation 4. A number of out-of-the-box AEM components 5. Search (AEM, eCommerce, 3rd party) 6. Catalog management 7. Promotions management 8. Client context cart store JCR repo product DB Experience Manager PIM/ecommerce
  • 6. Architecture of the Commerce Framework AEM Commerce API Implementation AEM Commerce Components AEM native impl JCR Repository hybris impl hybris DB other impl other
  • 7. © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Commerce providers With code samples 2
  • 8. eCommerce Engine Selection CommerceService commerceService = resource.adaptTo(CommerceService.class); CommerceSession session = commerceService.login(slingRequest, slingResponse); Product baseProduct = resource.adaptTo(Product.class); GeoImpl (geometrixx) hybrisImpl (hybris) otherImpl (xyz) Site Component OSGi container bundle bundlebundle cq:commerceProvider = geometrixx 1 2 3
  • 10. TrainingCommerceServiceFactory @Component(metatype = true, label = "Day CQ Commerce Factory for Training") @Service @Properties(value = { @Property(name = "service.description", value = "Factory for training commerce service"), @Property(name = "commerceProvider", value = "training") }) public class TrainingCommerceServiceFactory extends AbstractJcrCommerceServiceFactory implements CommerceServiceFactory { public CommerceService getCommerceService(Resource res) { return new TrainingCommerceServiceImpl(getServices(), res); } }
  • 11. Commerce Factory OSGi configuration
  • 12. TrainingCommerceServiceImpl public class TrainingCommerceServiceImpl extends AbstractJcrCommerceService implements CommerceService { [...] public CommerceSession login(SlingHttpServletRequest request, SlingHttpServletResponse response) throws CommerceException { return new TrainingCommerceSessionImpl(this, request, response, resource); } public Product getProduct(final String path) throws CommerceException { [...] return new TrainingProductImpl(resource); [...] }
  • 13. TrainingCommerceSessionImpl public class TrainingCommerceSessionImpl extends AbstractJcrCommerceSession { [..] }
  • 14. TrainingCommerceSessionImpl public class TrainingCommerceSessionImpl extends AbstractJcrCommerceSession { protected void loadCart() protected void saveCart() public String getProductPrice(Product product) public String getCartPrice(Predicate filter) protected void doAddCartEntry(Product product, int quantity) protected void calcCart() public List<Promotion> getActivePromotions() protected void calcOrder() }
  • 15. TrainingCommerceServiceFactory public class TrainingProductImpl extends AbstractJcrProduct { [...] public String getSKU() { return "todo-get-sku-method"; } }
  • 16. eCommerce Engine Selection CommerceService commerceService = resource.adaptTo(CommerceService.class); CommerceSession session = commerceService.login(slingRequest, slingResponse); Product baseProduct = resource.adaptTo(Product.class); GeoImpl (geometrixx) hybrisImpl (hybris) trainingImpl (training) Site Component OSGi container bundle bundlebundle cq:commerceProvider = training 1 2 3
  • 17. © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. (more on) CommerceSession With code samples 3
  • 18. •updateOrderDetails(Map<String, String> orderDetails); •getOrderDetails(); •submitOrder(); CommerceSession responsibilities • addCartEntry(Product product, int quantity); • modifyCartEntry(int entryNumber, int quantity); • deleteCartEntry(int entryNumber); •updateOrderDetails(Map<String, String> orderDetails); •getOrderDetails(); •submitOrder(); cart content pricing order details 1 2 3 •getPromotions(); •addVoucher(String code); •removeVoucher(String code); promotions3
  • 20. CommerceSession is RESTful style (2) ORDER%3a%3dorderId%253d9c1346bf-3813-4205-80ec-2fdfd1644143%7cCART%3a %3dquantity3%253d1%252cquantity0%253d1%252cquantity1%253d1%252cpromotionCoun t%253d2%252cquantity2%253d1%252cvoucherCount%253d0%252cpromotion1%253d %252fcontent%252fcampaigns%252fgeometrixx-outdoors%252fcosy-up-to-winter %252fwinter-female%252fcosy-companions%252cpromotion0%253d%252fcontent %252fcampaigns%252fgeometrixx-outdoors%252fbig-spender %252fordervalueover100%252ffree-shipping%252cproduct3%253d%252fcontent %252fgeometrixx-outdoors%252fen%252fequipment%252fskiing%252fhalifax-winter %252fjcr%253acontent%252fpar%252fproduct%252cproduct0%253d%252fcontent %252fgeometrixx-outdoors%252fen%252fwomen%252fcoats%252fcalgary-winter%252fjcr %253acontent%252fpar%252fproduct%252f397122-s%252cproduct2%253d%252fcontent %252fgeometrixx-outdoors%252fen%252fseasonal%252fwinter%252fequipment %252fkamloops-snow%252fjcr%253acontent%252fpar%252fproduct %252f37924450-7%252centryCount%253d4%252cproduct1%253d%252fcontent %252fgeometrixx-outdoors%252fen%252fequipment%252fskiing%252fkelowna-snow %252fjcr%253acontent%252fpar%252fproduct%7c Name: CommercePersistence, Host: geometrixx.com, Path: /
  • 21. CommerceSession is RESTful style (3) protected void loadCart() { [...] // // Load cart from the cookie: // Map<String, String> cartStore = ContextSessionPersistence.getStore(request, "CART", CommerceConstants.COMMERCE_COOKIE_NAME); [...] }
  • 22. © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Managing products Includes solutions for scalability, performance, etc.. 4
  • 23. Products and Variants architecture: - variant - color: purple - id: 397122.1 - variant - size: S - variant - size: L - variant - size: M - variant - size: XL - variant - color: purple -id: 397122.2 - price: 199 - variant - size: S - variant - size: L - variant - size: M - variant - size: XL - type: product - axes: color, size - id: 397122 - title: Saskatoon - price: 299 1 1 1 1 1 1 1 1 1 1 1
  • 24. Product interface public interface Product extends Adaptable { public String getPath(); // path to specific variation public String getPagePath(); // path to presentation page for all variations public String getSKU(); // unique ID of specific variation public String getTitle(); // shortcut to getProperty(TITLE) public String getDescription(); // shortcut to getProperty(DESCRIPTION) public String getImageUrl(); // shortcut to getProperty(IMAGE_URL) public String getThumbnailUrl(); // shortcut to getProperty(THUMBNAIL_URL) public <T> T getProperty(String name, Class<T> type); public Iterator<String> getVariantAxes(); public boolean axisIsVariant(String axis); public Iterator<Product> getVariants(VariantFilter filter) throws CommerceException; }
  • 25. AxisFilter implements VariantFilter public class AxisFilter implements VariantFilter { ... public boolean includes(Product product) { ValueMap values = product.adaptTo(ValueMap.class); if(values != null) { String v = values.get(axis, String.class); return v != null && v == value; } return false; } }
  • 26. Product Data admin UI •Double click from Content Finder to open •Based on Scaffolding •Create/Change data in /etc/commerce/products •Can change destination path from Scaffolding page •Can navigate and change variants (overrides higher level data) 5.6.1
  • 27. PIM Data & Product References 1 1 1 1 1 1 1 1 1 1 1 1 /etc/commerce/products 2 /content
  • 28. Proxy Product Pages make editable 2 nodes 10 nodes 5.6.1
  • 29. Hardening Product Importer •ROBUSTNESS: product importer more flexible with products/variants •EXTENSIBILITY: abstracted-out common parts of product importer •PERFORMANCE: importing 1000s products takes 80% less •SCALABILITY: support flat hierarchies through bucketing, proxy pages, scalable search 5.6.1
  • 30. Catalog Generation V2 •Regional Catalog support (based on MSM) •Catalog Design Changes support •Custom Catalog Pages support •Blueprint & Catalog converter for 5.6.0 to current 5.6.1
  • 31. © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Shopping cart 5
  • 32. Shopping Cart architecture (CommerceSession) The CommerceSession performs add, remove, etc. The CommerceSession also performs the various calculations on the cart. The CommerceSession also applies vouchers and promotions that have fired to the cart. Pricing modifiers: - Quantity discounts. - Different currencies. - VAT-liable and VAT-free.
  • 33. session.calcCart() protected void calcCart() { ... for (int i = 0; i < cart.size(); i++) { ... for (Promotion p : promotions) { try { PromotionHandler ph = p.adaptTo(PromotionHandler.class); PriceInfo discount = ph.applyCartEntryPromotion(this, p, entry); if (discount != null && discount.getAmount().compareTo(BigDecimal.ZERO) > 0) { ... entry.calcPrices(); ... } ... cartTotalPrice = cartTotalPrice.add(entry.getPriceInfo(new PriceFilter("POST_TAX", currencyCode)).get(0).getAmount()); } setPrice(new PriceInfo(cartPreTaxPrice, currency), "CART", "PRE_TAX"); setPrice(new PriceInfo(cartTax, currency), "CART", "TAX"); setPrice(new PriceInfo(cartTotalPrice, currency), "CART", "POST_TAX"); ... }
  • 34. Shopping Cart architecture (Storage) In AEM-native carts are stored in the ClientContext Personalization should always be driven through the ClientContext. CommerceSession.addCartEntry()
  • 35. © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Checkout 6
  • 36. Checkout architecture (order details) Order details are not fixed by the API: updateOrderDetails(Map<String, String> orderDetails); Shipping options (and prices) depend on weight, delivery address, etc... The CommerceSession owns shipping pricing; to retrieve and update delivery details: updateOrder(Map<String, Object> delta)
  • 37. © 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 7 Adobe &
  • 38. hybris integration: product data flow hybris: Omni Commerce Connect CQ: /etc/commerce/products CQ: /content/site hybris importer catalog publishing
  • 39. hybris integration: product data display JCR repo CQ hybris CQ hybris importer CQ component volatile data PIM data
  • 40. hybris integration: user synchronisation •Lazy import of hybris users into CQ •Lazy creation of CQ users in hybris •CQ stores hybris authentication data for later re-use •Pluggable architecture for custom authentication schemes (SAML, OAuth)
  • 41. hybris integration: customising the product import process •Need to add PIM attributes? Extend HybrisResponseParser. •Need to change the imported data hierarchy? Extend ImportHandler. •Need to customize what services are called when importing data? Extend HybrisImporter.
  • 42. hybris integration: customising the user import process •ProfileSynchronizer#syncProfile is responsible for sync the user’s CQ profile to the respective hybris account
  • 43. hybris integration: customising product and price loading •HybrisFactory#getProduct is responsible for creating Product instances •HybrisSession#getProductPriceInfo is responsible for getting the correct price for a product for the current user
  • 44. hybris integration: how to install AEM 5.6.1 3 cq-hybris-content 5.6.22 cq-hybris-server 5.6.01 cq-geometrixx-hybris-content 5.6.100 install packages 5.6.1
  • 45. hybris with AEM 5.6.1 •Supports hybris 5.0 •hybris 5.0 server embedded by default •Backward compatible with hybris 4.8.1 •Geometrixx-specific hybris connector •Extend the default hybris components to a specific implementation; •Remove internal references in the hybris components to allow for better extensibility •hybris connector source code included in the content package 5.6.1