Creating a Global eCommerce Site
          with EBusiness Suite and Fusion
          Middleware

          Brian “Bex” Huff
          Chief Software Architect
          Oracle ACE Director



Monday, October 17, 2011
The Project


      The Web Site Redesign (WSR) project
          • Goal: completely re-vamp a 10-year old product website


      The company
          • Multinational firm, heavily regulated industry
          • Fortune 500 company


      The team
          • Approximately 80 people


      My role
          • WebCenter architect, designer, and developer



                                                                     2


Monday, October 17, 2011
High-Level Requirements


      Fast and easy contribution by business owners
          • Mostly public content: secured edits


      Workflow process for all content changes
          • Track who changed what, when, why


      Support for multiple regions/countries locales

      Applications and content on the same pages
          • E-Commerce ordering tools
          • End-user calculators and other small applications


      Global Search Engine Optimization: “Google Friendly” URLs

                                                                   3


Monday, October 17, 2011
The Challenges


      Different products available in different markets
          • Users must never see a product they cannot purchase


      Different regulations per region
          • You can’t say that in Germany!


      Taxonomy was surprisingly critical
          • Incorrectly tagged content could lead to fines!


      What’s the best way to blend content and applications?




                                                                  4


Monday, October 17, 2011
More Challenges


      60+ product families
          • Each has a “business owner”


      IE 6 must be supported
          • Unfortunately...


      Different prices for different customers / locations




                                                              5


Monday, October 17, 2011
The Stack!


      Mostly Oracle

      Infrastructure
          • Linux, Oracle Database, GFS


      Framework
          • WebLogic Portal, SPRING, AJAX, and JavaScript


      Back-End
          • Enterprise Applications and middleware


      Security
          • Several identity management applications


                                                            6


Monday, October 17, 2011
Stack Diagram




                           7


Monday, October 17, 2011
Infrastructure


      Oracle Enterprise Linux
          • Why not?


      Oracle Database 11g
          • What else?


      Red Hat Global File System (GFS)
          • Needed a shared file system in the SAN
          • Multiple nodes in the system had to share files


      Load Balancers
          • Hardware and software (PEN)



                                                              8


Monday, October 17, 2011
Framework


      WebLogic Application Server and Portal
          • 3-node cluster for main web site, and admin interface
          • 2-node cluster each for UCM, OID, IDOL, everything else!


      “WSR Admin” portal
          • Configuration, customers, orders, product launches


      SPRING
          • Open source toolkit for creating web front-ends in Java


      JavaScript libraries
          • jQuery toolkit for front-facing
          • ExtJS for Admin interface


                                                                       9


Monday, October 17, 2011
Back-End Applications: Existing


      E-Business Suite
          • Contracts, customers, products for sale


      Product Information Management (QAD/FullTilt)
          • Product specs: size, weight, etc.
          • Categorization into product catalogs
          • Localizable, but unfortunately not normalized


      Documentum
          • Repository for technical manuals
          • “Tactical” integration: content exported, but repository remains
          • Full consolidation out of scope of current project!



                                                                               10


Monday, October 17, 2011
Back-End Applications: New


      WebCenter Content (UCM) 10gr3
          • Main content repository


      Site Studio 10gr4
          • Built on top of UCM
          • Site navigation, web content, images, CSS, JS
          • Has the “Open WCM” web services we need


      Autonomy Idol
          • Enterprise Search




                                                            11


Monday, October 17, 2011
Apps Challenges


      Speed was critical!
          • Needed to make custom web services to query eBiz tables directly


      Multiple search indexes
          • One per locale: critical the people only search in their locale!


      Blending the data together




                                                                               12


Monday, October 17, 2011
Security


      Active Directory
          • Used for internal employees
          • Integration needed for UCM and Admin site rights


      Oracle Internet Directory
          • Used for external customers
          • Needed to log in, make orders, view pages


      Oracle Access Manager
          • Single-Sign-On




                                                               13


Monday, October 17, 2011
Security Configuration




                           14


Monday, October 17, 2011
Integration Strategy


      Portal front-end blends everything together

      Content stored and managed by WebCenter Content
          • Marketing literature for products
          • General web pages, contact us, literature downloads, video
          • Localized versions of web assets


      Site navigation controlled by Site Studio
          • Opt-in, Opt-out


      Product information controlled by QAD
          • Localized and normalized there
          • Export the raw data to the portal’s database


                                                                         15


Monday, October 17, 2011
Integrations


      Portal - EBuisness Suite
          • Some TIBCO Web Services, some custom Web Services
          • Create Order, Order Details, Item Price services
          • Consumed via AJAX from portlet



      Portal - Product Info / QAD
          •   PIM data not fully normalized
          •   Get a “dump” of raw data nightly
          •   Organize it in WSR database in more useful ways
          •   Create a “view” on this table, to drive UCM metadata tags
               • Tree-control to “tag” a page as belonging to a product catalog




                                                                                  16


Monday, October 17, 2011
Integrations, cont.


      Portal - UCM
          • Used “Open WCM” Web Services and a custom servlet
             • Did not use Site Studio for External Applications (SSXA)
          • Needed localization features unavailable in SSXA
          • Used RIDC bean
          • Cached with EHCache
          • Taxonomy controlled by UCM


      Portal - Database
          •   Spring DOA, and hand-written SQL
          •   Tried Hibernate, ditched it half way through
          •   ORM frameworks look good on paper... but...
          •   Only worth the effort if using a 2nd layer cache, which we weren’t


                                                                                   17


Monday, October 17, 2011
Search Engine


      IDOL needed one repository per locale
          • Also needed STRICT adherence to taxonomy


      Did not have a UCM connector
          • HTTP web spider would not be fast enough for multiple locales


      Custom connector
          •   Database view on Revisions and DocMeta table
          •   Scheduled task to watch for new content
          •   Determined the URL based on xWebSiteSection
          •   Determined taxonomy/locale from other metadata




                                                                            18


Monday, October 17, 2011
“Admin” Portal


      Custom interface to E Business suite and OID
          •   Create users, manage email templates
          •   Enable products to be for sale online in specific regions
          •   Manage / edit orders
          •   Create a new “region” to enable sales / new website
          •   Create new training class schedule / locations
          •   Customer email subscriptions
          •   Custom reports




                                                                          19


Monday, October 17, 2011
Custom Portal Controller


      Import the “Site Studio Navigation” file from UCM/Site Studio
          • Contains the full navigation for the site
          • All content references, and “tokens” representing specific AJAX apps


      Generate site navigation for each locale
          • Inherit navigation/content from the “global” locale
          • Opt in / opt out of specific pages


      Inject AJAX applications when “Tokens” found on page
          • Users can select which AJAX app they want
          • Data files “tagged” with a product ID or catalog
             • Auto-generated AJAX
          • Some templates


                                                                                   20


Monday, October 17, 2011
Custom Navigation Editor App




                                 21


Monday, October 17, 2011
Security Integration


      Most was out-of-the-box
          • OAM / OID works well with WebLogic and UCM
          • Some issues with OAM and non-signed applets


      Some customizations needed
          • Simplified “customer info” editor in the Admin portal


      Custom AJAX controller
          •   Security through AJAX is tricky
          •   Sessions expire while still on the page
          •   AJAX needs to handle session expiration, and redirect
          •   Made custom OAM AccessGate




                                                                      22


Monday, October 17, 2011
Data Cache


      Use the distributed EHCache code

      Extremely easy to make existing SPRING code cachable

        @Cacheable(cacheName="ucmCache")

        public String renderPlaceholderByDocName(IdcContext userContext,

        !        String docName, String placeholderDefinitionName, String siteId,

        !        String nodeId, boolean isContrib, String userLocale) {

        ...

        }




                                                                                    23


Monday, October 17, 2011
Web Cache


      Use front-end Apache server with mod_proxy

      Problem: entire web site is HTTPS
          • Browsers by default do not cache secure traffic
          • Problem: with all the JavaScript libraries, some pages were 1 MB!
          • Caching those static resources critical


      Apache server tuning
          • For all cachable content, set Cache-Control: public
          • Do not cache content from AJAX controller
             • Force AJAX to reload on every page to avoid stale content
          • mod_deflate
             • GZIP-compress rarely changing text files (JS/CSS/XML)


                                                                                24


Monday, October 17, 2011
Technical Architecture




                           25


Monday, October 17, 2011
Product Catalog




                           26


Monday, October 17, 2011
AJAX Embedded Application




                              27


Monday, October 17, 2011
Business-Controlled Content




                                28


Monday, October 17, 2011
Lessons Learned


      Hire a team that’s done it before
          • Primary reason behind previous “false starts”


      Avoid GFS like the plague!
          • Extremely difficult to set up properly
          • A file locking snafu would seize up all nodes in the system until rebooted!


      More frequent code reviews, and project patterns
          • Could have avoided some
          • Tough to do, when the team’s under a tight deadline


      OAM/WebGate has issues with non-signed Applets
          • UCM side was tricky to get working with SSO


                                                                                          29


Monday, October 17, 2011
If I Had To Do It All Over Again...


      Straight WebLogic for front-end, no Portal
          •   Admin interface used portlet features, but
          •   Front-end web site was all in one SPRING portlet
          •   Google-Friendly URLs would be easier
          •   AJAX controller would be easier
          •   Oracle really needs a lightweight Java framework for websites...


      Use Diesel Point for search engine
          • IDOL was overkill, both in cost and features used


      Focus on ONE JavaScript framework, and keep it lean
          • Because of the “plugin” architecture, jQuery grows like weeds
          • Pages can become HUGE relatively quickly


                                                                                 30


Monday, October 17, 2011
Questions?


      My Company: http://bezzotech.com

      My Blog: http://bexhuff.com

      My Self: bex@bezzotech.com




                                          31


Monday, October 17, 2011

Creating a Global E-Commerce Website With E-Business Suite and Fusion Middleware

  • 1.
    Creating a GlobaleCommerce Site with EBusiness Suite and Fusion Middleware Brian “Bex” Huff Chief Software Architect Oracle ACE Director Monday, October 17, 2011
  • 2.
    The Project  The Web Site Redesign (WSR) project • Goal: completely re-vamp a 10-year old product website  The company • Multinational firm, heavily regulated industry • Fortune 500 company  The team • Approximately 80 people  My role • WebCenter architect, designer, and developer 2 Monday, October 17, 2011
  • 3.
    High-Level Requirements  Fast and easy contribution by business owners • Mostly public content: secured edits  Workflow process for all content changes • Track who changed what, when, why  Support for multiple regions/countries locales  Applications and content on the same pages • E-Commerce ordering tools • End-user calculators and other small applications  Global Search Engine Optimization: “Google Friendly” URLs 3 Monday, October 17, 2011
  • 4.
    The Challenges  Different products available in different markets • Users must never see a product they cannot purchase  Different regulations per region • You can’t say that in Germany!  Taxonomy was surprisingly critical • Incorrectly tagged content could lead to fines!  What’s the best way to blend content and applications? 4 Monday, October 17, 2011
  • 5.
    More Challenges  60+ product families • Each has a “business owner”  IE 6 must be supported • Unfortunately...  Different prices for different customers / locations 5 Monday, October 17, 2011
  • 6.
    The Stack!  Mostly Oracle  Infrastructure • Linux, Oracle Database, GFS  Framework • WebLogic Portal, SPRING, AJAX, and JavaScript  Back-End • Enterprise Applications and middleware  Security • Several identity management applications 6 Monday, October 17, 2011
  • 7.
    Stack Diagram 7 Monday, October 17, 2011
  • 8.
    Infrastructure  Oracle Enterprise Linux • Why not?  Oracle Database 11g • What else?  Red Hat Global File System (GFS) • Needed a shared file system in the SAN • Multiple nodes in the system had to share files  Load Balancers • Hardware and software (PEN) 8 Monday, October 17, 2011
  • 9.
    Framework  WebLogic Application Server and Portal • 3-node cluster for main web site, and admin interface • 2-node cluster each for UCM, OID, IDOL, everything else!  “WSR Admin” portal • Configuration, customers, orders, product launches  SPRING • Open source toolkit for creating web front-ends in Java  JavaScript libraries • jQuery toolkit for front-facing • ExtJS for Admin interface 9 Monday, October 17, 2011
  • 10.
    Back-End Applications: Existing  E-Business Suite • Contracts, customers, products for sale  Product Information Management (QAD/FullTilt) • Product specs: size, weight, etc. • Categorization into product catalogs • Localizable, but unfortunately not normalized  Documentum • Repository for technical manuals • “Tactical” integration: content exported, but repository remains • Full consolidation out of scope of current project! 10 Monday, October 17, 2011
  • 11.
    Back-End Applications: New  WebCenter Content (UCM) 10gr3 • Main content repository  Site Studio 10gr4 • Built on top of UCM • Site navigation, web content, images, CSS, JS • Has the “Open WCM” web services we need  Autonomy Idol • Enterprise Search 11 Monday, October 17, 2011
  • 12.
    Apps Challenges  Speed was critical! • Needed to make custom web services to query eBiz tables directly  Multiple search indexes • One per locale: critical the people only search in their locale!  Blending the data together 12 Monday, October 17, 2011
  • 13.
    Security  Active Directory • Used for internal employees • Integration needed for UCM and Admin site rights  Oracle Internet Directory • Used for external customers • Needed to log in, make orders, view pages  Oracle Access Manager • Single-Sign-On 13 Monday, October 17, 2011
  • 14.
    Security Configuration 14 Monday, October 17, 2011
  • 15.
    Integration Strategy  Portal front-end blends everything together  Content stored and managed by WebCenter Content • Marketing literature for products • General web pages, contact us, literature downloads, video • Localized versions of web assets  Site navigation controlled by Site Studio • Opt-in, Opt-out  Product information controlled by QAD • Localized and normalized there • Export the raw data to the portal’s database 15 Monday, October 17, 2011
  • 16.
    Integrations  Portal - EBuisness Suite • Some TIBCO Web Services, some custom Web Services • Create Order, Order Details, Item Price services • Consumed via AJAX from portlet  Portal - Product Info / QAD • PIM data not fully normalized • Get a “dump” of raw data nightly • Organize it in WSR database in more useful ways • Create a “view” on this table, to drive UCM metadata tags • Tree-control to “tag” a page as belonging to a product catalog 16 Monday, October 17, 2011
  • 17.
    Integrations, cont.  Portal - UCM • Used “Open WCM” Web Services and a custom servlet • Did not use Site Studio for External Applications (SSXA) • Needed localization features unavailable in SSXA • Used RIDC bean • Cached with EHCache • Taxonomy controlled by UCM  Portal - Database • Spring DOA, and hand-written SQL • Tried Hibernate, ditched it half way through • ORM frameworks look good on paper... but... • Only worth the effort if using a 2nd layer cache, which we weren’t 17 Monday, October 17, 2011
  • 18.
    Search Engine  IDOL needed one repository per locale • Also needed STRICT adherence to taxonomy  Did not have a UCM connector • HTTP web spider would not be fast enough for multiple locales  Custom connector • Database view on Revisions and DocMeta table • Scheduled task to watch for new content • Determined the URL based on xWebSiteSection • Determined taxonomy/locale from other metadata 18 Monday, October 17, 2011
  • 19.
    “Admin” Portal  Custom interface to E Business suite and OID • Create users, manage email templates • Enable products to be for sale online in specific regions • Manage / edit orders • Create a new “region” to enable sales / new website • Create new training class schedule / locations • Customer email subscriptions • Custom reports 19 Monday, October 17, 2011
  • 20.
    Custom Portal Controller  Import the “Site Studio Navigation” file from UCM/Site Studio • Contains the full navigation for the site • All content references, and “tokens” representing specific AJAX apps  Generate site navigation for each locale • Inherit navigation/content from the “global” locale • Opt in / opt out of specific pages  Inject AJAX applications when “Tokens” found on page • Users can select which AJAX app they want • Data files “tagged” with a product ID or catalog • Auto-generated AJAX • Some templates 20 Monday, October 17, 2011
  • 21.
    Custom Navigation EditorApp 21 Monday, October 17, 2011
  • 22.
    Security Integration  Most was out-of-the-box • OAM / OID works well with WebLogic and UCM • Some issues with OAM and non-signed applets  Some customizations needed • Simplified “customer info” editor in the Admin portal  Custom AJAX controller • Security through AJAX is tricky • Sessions expire while still on the page • AJAX needs to handle session expiration, and redirect • Made custom OAM AccessGate 22 Monday, October 17, 2011
  • 23.
    Data Cache  Use the distributed EHCache code  Extremely easy to make existing SPRING code cachable @Cacheable(cacheName="ucmCache") public String renderPlaceholderByDocName(IdcContext userContext, ! String docName, String placeholderDefinitionName, String siteId, ! String nodeId, boolean isContrib, String userLocale) { ... } 23 Monday, October 17, 2011
  • 24.
    Web Cache  Use front-end Apache server with mod_proxy  Problem: entire web site is HTTPS • Browsers by default do not cache secure traffic • Problem: with all the JavaScript libraries, some pages were 1 MB! • Caching those static resources critical  Apache server tuning • For all cachable content, set Cache-Control: public • Do not cache content from AJAX controller • Force AJAX to reload on every page to avoid stale content • mod_deflate • GZIP-compress rarely changing text files (JS/CSS/XML) 24 Monday, October 17, 2011
  • 25.
    Technical Architecture 25 Monday, October 17, 2011
  • 26.
    Product Catalog 26 Monday, October 17, 2011
  • 27.
    AJAX Embedded Application 27 Monday, October 17, 2011
  • 28.
    Business-Controlled Content 28 Monday, October 17, 2011
  • 29.
    Lessons Learned  Hire a team that’s done it before • Primary reason behind previous “false starts”  Avoid GFS like the plague! • Extremely difficult to set up properly • A file locking snafu would seize up all nodes in the system until rebooted!  More frequent code reviews, and project patterns • Could have avoided some • Tough to do, when the team’s under a tight deadline  OAM/WebGate has issues with non-signed Applets • UCM side was tricky to get working with SSO 29 Monday, October 17, 2011
  • 30.
    If I HadTo Do It All Over Again...  Straight WebLogic for front-end, no Portal • Admin interface used portlet features, but • Front-end web site was all in one SPRING portlet • Google-Friendly URLs would be easier • AJAX controller would be easier • Oracle really needs a lightweight Java framework for websites...  Use Diesel Point for search engine • IDOL was overkill, both in cost and features used  Focus on ONE JavaScript framework, and keep it lean • Because of the “plugin” architecture, jQuery grows like weeds • Pages can become HUGE relatively quickly 30 Monday, October 17, 2011
  • 31.
    Questions?  My Company: http://bezzotech.com  My Blog: http://bexhuff.com  My Self: bex@bezzotech.com 31 Monday, October 17, 2011