SlideShare a Scribd company logo
1 of 47
Download to read offline
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

What's hot

Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core componentsLokesh BS
 
AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AdobeMarketingCloud
 
IMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing Cloud
IMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing CloudIMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing Cloud
IMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing CloudAdobeMarketingCloud
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
 
IMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back endIMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back endAdobeMarketingCloud
 
IMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM ToolingIMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM ToolingAdobeMarketingCloud
 
AEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkAEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkPaolo Mottadelli
 
12 hot features to engage and save time with aem 6.2
12 hot features to engage and save time with aem 6.212 hot features to engage and save time with aem 6.2
12 hot features to engage and save time with aem 6.2Tricode (part of Dept)
 
10 reasons to migrate from AEM 5 to 6.1
10 reasons to migrate from AEM 5 to 6.110 reasons to migrate from AEM 5 to 6.1
10 reasons to migrate from AEM 5 to 6.1Tricode (part of Dept)
 
Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)Gabriel Walt
 
Using AEM in a customer global multi-channel program
Using AEM in a customer global multi-channel programUsing AEM in a customer global multi-channel program
Using AEM in a customer global multi-channel programMeryll Blanchet
 
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)Gabriel Walt
 
Accelerate Your Next AEM Project
Accelerate Your Next AEM ProjectAccelerate Your Next AEM Project
Accelerate Your Next AEM ProjectMark Kelley
 
IMMERSE 2016 Cedric Huesler US Keynote
IMMERSE 2016 Cedric Huesler US KeynoteIMMERSE 2016 Cedric Huesler US Keynote
IMMERSE 2016 Cedric Huesler US KeynoteAdobeMarketingCloud
 
Extra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonExtra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonAEM HUB
 
Ask the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + BracketsAsk the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + BracketsAdobeMarketingCloud
 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMBojana Popovska
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component ResuseJustin Edelson
 
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQNetcetera
 

What's hot (19)

Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core components
 
AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016
 
IMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing Cloud
IMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing CloudIMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing Cloud
IMMERSE'16 Intro to Adobe Experience Manager & Adobe Marketing Cloud
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
IMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back endIMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back end
 
IMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM ToolingIMMERSE'16 Introduction to AEM Tooling
IMMERSE'16 Introduction to AEM Tooling
 
AEM (CQ) eCommerce Framework
AEM (CQ) eCommerce FrameworkAEM (CQ) eCommerce Framework
AEM (CQ) eCommerce Framework
 
12 hot features to engage and save time with aem 6.2
12 hot features to engage and save time with aem 6.212 hot features to engage and save time with aem 6.2
12 hot features to engage and save time with aem 6.2
 
10 reasons to migrate from AEM 5 to 6.1
10 reasons to migrate from AEM 5 to 6.110 reasons to migrate from AEM 5 to 6.1
10 reasons to migrate from AEM 5 to 6.1
 
Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)
 
Using AEM in a customer global multi-channel program
Using AEM in a customer global multi-channel programUsing AEM in a customer global multi-channel program
Using AEM in a customer global multi-channel program
 
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
 
Accelerate Your Next AEM Project
Accelerate Your Next AEM ProjectAccelerate Your Next AEM Project
Accelerate Your Next AEM Project
 
IMMERSE 2016 Cedric Huesler US Keynote
IMMERSE 2016 Cedric Huesler US KeynoteIMMERSE 2016 Cedric Huesler US Keynote
IMMERSE 2016 Cedric Huesler US Keynote
 
Extra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonExtra aem development tools by Justin Edelson
Extra aem development tools by Justin Edelson
 
Ask the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + BracketsAsk the AEM Community Expert Feb 2016 Session: AEM + Brackets
Ask the AEM Community Expert Feb 2016 Session: AEM + Brackets
 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEM
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
 
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
 

Viewers also liked

Adobe AEM Commerce with hybris
Adobe AEM Commerce with hybrisAdobe AEM Commerce with hybris
Adobe AEM Commerce with hybrisPaolo Mottadelli
 
AEM Hub 2014: AEM 5.6.1 e-Commerce Integration
AEM Hub 2014: AEM 5.6.1 e-Commerce IntegrationAEM Hub 2014: AEM 5.6.1 e-Commerce Integration
AEM Hub 2014: AEM 5.6.1 e-Commerce IntegrationMeryll Blanchet
 
Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1vikram singh
 
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareApache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareRobert Munteanu
 
Going Global. Going Local.
Going Global. Going Local.Going Global. Going Local.
Going Global. Going Local.James Gagliardi
 
Neha Gupta - AIR Mobile: Cross promotion
Neha Gupta - AIR Mobile: Cross promotionNeha Gupta - AIR Mobile: Cross promotion
Neha Gupta - AIR Mobile: Cross promotionFlash Conference
 
AEM 6.2 -Assets - Creating engaging experience at scale
AEM 6.2 -Assets - Creating engaging experience at scaleAEM 6.2 -Assets - Creating engaging experience at scale
AEM 6.2 -Assets - Creating engaging experience at scaleKevin Farley
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletFahmi Jafar
 
AEM 6 DAM - Integrations, Integrations, Integrations
AEM 6 DAM - Integrations, Integrations, IntegrationsAEM 6 DAM - Integrations, Integrations, Integrations
AEM 6 DAM - Integrations, Integrations, Integrationsconnectwebex
 
Adobe_Campaign_Overview
Adobe_Campaign_OverviewAdobe_Campaign_Overview
Adobe_Campaign_OverviewAlex Pepicelli
 
Implementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEMImplementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEMrtpaem
 
java Servlet technology
java Servlet technologyjava Servlet technology
java Servlet technologyTanmoy Barman
 
Apache SOLR in AEM 6
Apache SOLR in AEM 6Apache SOLR in AEM 6
Apache SOLR in AEM 6Yash Mody
 
Sap java connector / Hybris RFC
Sap java connector / Hybris RFCSap java connector / Hybris RFC
Sap java connector / Hybris RFCMonsif Elaissoussi
 
Five Strategies for Effortless Customer Service
Five Strategies for Effortless Customer ServiceFive Strategies for Effortless Customer Service
Five Strategies for Effortless Customer ServiceSAP Customer Experience
 
Adobe Experience Manager - 6th Edition by Cedric Huesler
Adobe Experience Manager - 6th Edition by Cedric HueslerAdobe Experience Manager - 6th Edition by Cedric Huesler
Adobe Experience Manager - 6th Edition by Cedric HueslerAEM HUB
 
Java servlet life cycle - methods ppt
Java servlet life cycle - methods pptJava servlet life cycle - methods ppt
Java servlet life cycle - methods pptkamal kotecha
 

Viewers also liked (20)

Adobe AEM Commerce with hybris
Adobe AEM Commerce with hybrisAdobe AEM Commerce with hybris
Adobe AEM Commerce with hybris
 
AEM Hub 2014: AEM 5.6.1 e-Commerce Integration
AEM Hub 2014: AEM 5.6.1 e-Commerce IntegrationAEM Hub 2014: AEM 5.6.1 e-Commerce Integration
AEM Hub 2014: AEM 5.6.1 e-Commerce Integration
 
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir ČaušJavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
 
Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1
 
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareApache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middleware
 
Going Global. Going Local.
Going Global. Going Local.Going Global. Going Local.
Going Global. Going Local.
 
Neha Gupta - AIR Mobile: Cross promotion
Neha Gupta - AIR Mobile: Cross promotionNeha Gupta - AIR Mobile: Cross promotion
Neha Gupta - AIR Mobile: Cross promotion
 
AEM 6.2 -Assets - Creating engaging experience at scale
AEM 6.2 -Assets - Creating engaging experience at scaleAEM 6.2 -Assets - Creating engaging experience at scale
AEM 6.2 -Assets - Creating engaging experience at scale
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java Servlet
 
e-Eommerce - Framework
e-Eommerce -  Frameworke-Eommerce -  Framework
e-Eommerce - Framework
 
AEM 6 DAM - Integrations, Integrations, Integrations
AEM 6 DAM - Integrations, Integrations, IntegrationsAEM 6 DAM - Integrations, Integrations, Integrations
AEM 6 DAM - Integrations, Integrations, Integrations
 
Adobe_Campaign_Overview
Adobe_Campaign_OverviewAdobe_Campaign_Overview
Adobe_Campaign_Overview
 
Implementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEMImplementing Site Search in CQ5 / AEM
Implementing Site Search in CQ5 / AEM
 
java Servlet technology
java Servlet technologyjava Servlet technology
java Servlet technology
 
Apache SOLR in AEM 6
Apache SOLR in AEM 6Apache SOLR in AEM 6
Apache SOLR in AEM 6
 
Sap java connector / Hybris RFC
Sap java connector / Hybris RFCSap java connector / Hybris RFC
Sap java connector / Hybris RFC
 
Five Strategies for Effortless Customer Service
Five Strategies for Effortless Customer ServiceFive Strategies for Effortless Customer Service
Five Strategies for Effortless Customer Service
 
Adobe Experience Manager - 6th Edition by Cedric Huesler
Adobe Experience Manager - 6th Edition by Cedric HueslerAdobe Experience Manager - 6th Edition by Cedric Huesler
Adobe Experience Manager - 6th Edition by Cedric Huesler
 
Java servlet life cycle - methods ppt
Java servlet life cycle - methods pptJava servlet life cycle - methods ppt
Java servlet life cycle - methods ppt
 
M-Commerce
M-CommerceM-Commerce
M-Commerce
 

Similar to Evolve13 cq-commerce-framework

Intoduction commerceserver2009
Intoduction commerceserver2009Intoduction commerceserver2009
Intoduction commerceserver2009Tarek 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
 
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 Developerscboecking
 
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauAmasty
 
Folio3 - An Introduction to PHP Yii
Folio3 - An Introduction to PHP YiiFolio3 - An Introduction to PHP Yii
Folio3 - An Introduction to PHP YiiFolio3 Software
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
 
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 TricksSenturus
 
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 3James Jara
 
Universal Migration Checklist for Developers.pdf
Universal Migration Checklist for Developers.pdfUniversal Migration Checklist for Developers.pdf
Universal Migration Checklist for Developers.pdfCart2Cart2
 
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 trainingLokesh 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 - nLokesh 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
 
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 BluemixIBM
 
Write once, ship multiple times
Write once, ship multiple timesWrite once, ship multiple times
Write once, ship multiple timesŽeljko Plesac
 

Similar to Evolve13 cq-commerce-framework (20)

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
 
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
 
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
 
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
 
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
 
Write once, ship multiple times
Write once, ship multiple timesWrite once, ship multiple times
Write once, ship multiple times
 
Adobe Analytics training course
Adobe Analytics training courseAdobe Analytics training course
Adobe Analytics training course
 

More from Paolo Mottadelli

Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Paolo Mottadelli
 
Jira as a Project Management Tool
Jira as a Project Management ToolJira as a Project Management Tool
Jira as a Project Management ToolPaolo Mottadelli
 
Interoperability at Apache Software Foundation
Interoperability at Apache Software FoundationInteroperability at Apache Software Foundation
Interoperability at Apache Software FoundationPaolo Mottadelli
 
Content Analysis with Apache Tika
Content Analysis with Apache TikaContent Analysis with Apache Tika
Content Analysis with Apache TikaPaolo Mottadelli
 
Content analysis for ECM with Apache Tika
Content analysis for ECM with Apache TikaContent analysis for ECM with Apache Tika
Content analysis for ECM with Apache TikaPaolo Mottadelli
 

More from Paolo Mottadelli (9)

Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014
 
Java standards in WCM
Java standards in WCMJava standards in WCM
Java standards in WCM
 
JCR and Sling Quick Dive
JCR and Sling Quick DiveJCR and Sling Quick Dive
JCR and Sling Quick Dive
 
Open Development
Open DevelopmentOpen Development
Open Development
 
Apache Poi Recipes
Apache Poi RecipesApache Poi Recipes
Apache Poi Recipes
 
Jira as a Project Management Tool
Jira as a Project Management ToolJira as a Project Management Tool
Jira as a Project Management Tool
 
Interoperability at Apache Software Foundation
Interoperability at Apache Software FoundationInteroperability at Apache Software Foundation
Interoperability at Apache Software Foundation
 
Content Analysis with Apache Tika
Content Analysis with Apache TikaContent Analysis with Apache Tika
Content Analysis with Apache Tika
 
Content analysis for ECM with Apache Tika
Content analysis for ECM with Apache TikaContent analysis for ECM with Apache Tika
Content analysis for ECM with Apache Tika
 

Recently uploaded

Independent Call Girls Delhi ~9711199012~ Call Me
Independent Call Girls Delhi ~9711199012~ Call MeIndependent Call Girls Delhi ~9711199012~ Call Me
Independent Call Girls Delhi ~9711199012~ Call MeMs Riya
 
Top 10 Makeup Brands in India for women
Top 10  Makeup Brands in India for womenTop 10  Makeup Brands in India for women
Top 10 Makeup Brands in India for womenAkshitaBhatt19
 
Call Girls In Karol Bagh__ 8448079011 Escort Service in Delhi
Call Girls In Karol Bagh__ 8448079011 Escort Service in DelhiCall Girls In Karol Bagh__ 8448079011 Escort Service in Delhi
Call Girls In Karol Bagh__ 8448079011 Escort Service in DelhiRaviSingh594208
 
Dubai Call Girls O528786472 Call Girls Dubai OL
Dubai Call Girls O528786472 Call Girls Dubai OLDubai Call Girls O528786472 Call Girls Dubai OL
Dubai Call Girls O528786472 Call Girls Dubai OLhf8803863
 
KALENDAR KUDA 2024 Hi resolution cuti umum.pdf
KALENDAR KUDA 2024 Hi resolution cuti umum.pdfKALENDAR KUDA 2024 Hi resolution cuti umum.pdf
KALENDAR KUDA 2024 Hi resolution cuti umum.pdfSallamSulaiman
 
Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...
Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...
Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...Niamh verma
 
Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012
Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012
Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012Mona Rathore
 
Why Are Dogs So Loyal causes beyond dog.
Why Are Dogs So Loyal causes beyond dog.Why Are Dogs So Loyal causes beyond dog.
Why Are Dogs So Loyal causes beyond dog.Bilal Ahmad
 
‘I think I might die if I made it’ 'There were no singles'
‘I think I might die if I made it’ 'There were no singles'‘I think I might die if I made it’ 'There were no singles'
‘I think I might die if I made it’ 'There were no singles'cakepearls Official
 
22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USA
22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USA22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USA
22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USAQueen of Hearts Jewelry
 
Dubai Call Girls Big Tit Wives O528786472 Call Girls Dubai
Dubai Call Girls Big Tit Wives O528786472 Call Girls DubaiDubai Call Girls Big Tit Wives O528786472 Call Girls Dubai
Dubai Call Girls Big Tit Wives O528786472 Call Girls Dubaihf8803863
 
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip Call꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip CallMs Riya
 
Mushkan 8126941651 Call Girls Servicein Jammu
Mushkan 8126941651 Call Girls Servicein JammuMushkan 8126941651 Call Girls Servicein Jammu
Mushkan 8126941651 Call Girls Servicein Jammujaanseema653
 
Call Girls in Sarita Vihar__ 8448079011 Escort Service in Delhi
Call Girls in Sarita Vihar__ 8448079011 Escort Service in DelhiCall Girls in Sarita Vihar__ 8448079011 Escort Service in Delhi
Call Girls in Sarita Vihar__ 8448079011 Escort Service in DelhiRaviSingh594208
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | Delhisoniya singh
 
Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️
Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️
Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️soniya singh
 
Neelam 9058824046 Call Girls Service in Haridwar
Neelam 9058824046 Call Girls Service in HaridwarNeelam 9058824046 Call Girls Service in Haridwar
Neelam 9058824046 Call Girls Service in Haridwarjaanseema653
 
Panipat Call Girls in Five Star Services Call 08860008073
Panipat Call Girls in Five Star Services Call 08860008073 Panipat Call Girls in Five Star Services Call 08860008073
Panipat Call Girls in Five Star Services Call 08860008073 Apsara Of India
 
Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...
Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...
Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...Pooja Nehwal
 

Recently uploaded (20)

Independent Call Girls Delhi ~9711199012~ Call Me
Independent Call Girls Delhi ~9711199012~ Call MeIndependent Call Girls Delhi ~9711199012~ Call Me
Independent Call Girls Delhi ~9711199012~ Call Me
 
Top 10 Makeup Brands in India for women
Top 10  Makeup Brands in India for womenTop 10  Makeup Brands in India for women
Top 10 Makeup Brands in India for women
 
Call Girls In Karol Bagh__ 8448079011 Escort Service in Delhi
Call Girls In Karol Bagh__ 8448079011 Escort Service in DelhiCall Girls In Karol Bagh__ 8448079011 Escort Service in Delhi
Call Girls In Karol Bagh__ 8448079011 Escort Service in Delhi
 
Dubai Call Girls O528786472 Call Girls Dubai OL
Dubai Call Girls O528786472 Call Girls Dubai OLDubai Call Girls O528786472 Call Girls Dubai OL
Dubai Call Girls O528786472 Call Girls Dubai OL
 
KALENDAR KUDA 2024 Hi resolution cuti umum.pdf
KALENDAR KUDA 2024 Hi resolution cuti umum.pdfKALENDAR KUDA 2024 Hi resolution cuti umum.pdf
KALENDAR KUDA 2024 Hi resolution cuti umum.pdf
 
Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...
Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...
Call Girls in Chandigarh Annaya❤️🍑 9115573837 👄🫦Independent Escort Service Ch...
 
Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012
Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012
Russian BINDASH Call Girls In Mahipalpur Delhi ☎️9711199012
 
Why Are Dogs So Loyal causes beyond dog.
Why Are Dogs So Loyal causes beyond dog.Why Are Dogs So Loyal causes beyond dog.
Why Are Dogs So Loyal causes beyond dog.
 
‘I think I might die if I made it’ 'There were no singles'
‘I think I might die if I made it’ 'There were no singles'‘I think I might die if I made it’ 'There were no singles'
‘I think I might die if I made it’ 'There were no singles'
 
22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USA
22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USA22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USA
22K Indian Gold Jewelry Online - Buy 22 Karat Gold Jewelry in USA
 
Dubai Call Girls Big Tit Wives O528786472 Call Girls Dubai
Dubai Call Girls Big Tit Wives O528786472 Call Girls DubaiDubai Call Girls Big Tit Wives O528786472 Call Girls Dubai
Dubai Call Girls Big Tit Wives O528786472 Call Girls Dubai
 
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip Call꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199012 ☎️ Hard And Sexy Vip Call
 
Mushkan 8126941651 Call Girls Servicein Jammu
Mushkan 8126941651 Call Girls Servicein JammuMushkan 8126941651 Call Girls Servicein Jammu
Mushkan 8126941651 Call Girls Servicein Jammu
 
Russian Call Girls Rohini Sector 25 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...
Russian Call Girls Rohini Sector 25 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...Russian Call Girls Rohini Sector 25 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...
Russian Call Girls Rohini Sector 25 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...
 
Call Girls in Sarita Vihar__ 8448079011 Escort Service in Delhi
Call Girls in Sarita Vihar__ 8448079011 Escort Service in DelhiCall Girls in Sarita Vihar__ 8448079011 Escort Service in Delhi
Call Girls in Sarita Vihar__ 8448079011 Escort Service in Delhi
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Jama Masjid | Delhi
 
Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️
Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️
Call Girls in civil lines Delhi 8264348440 ✅ call girls ❤️
 
Neelam 9058824046 Call Girls Service in Haridwar
Neelam 9058824046 Call Girls Service in HaridwarNeelam 9058824046 Call Girls Service in Haridwar
Neelam 9058824046 Call Girls Service in Haridwar
 
Panipat Call Girls in Five Star Services Call 08860008073
Panipat Call Girls in Five Star Services Call 08860008073 Panipat Call Girls in Five Star Services Call 08860008073
Panipat Call Girls in Five Star Services Call 08860008073
 
Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...
Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...
Call Numbe 9892124323, Vashi call girls, Juhu Call Girls, Powai Call Girls Se...
 

Evolve13 cq-commerce-framework

  • 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