• Cert++
  • Practice
  • Certle
  • Review
  • Tracks
  • Checklist
  • Guides
  • Upgrade
Cert++
  1. Home
  2. B2C Commerce Developer

B2C Commerce Developer

Checklist progress

0/146Learned

B2C Commerce Developer

Study Checklist

  • Platform Administrator
  • Platform App Builder
  • Platform Foundations
  • Platform Developer
  • Platform Administrator II
  • Agentforce Sales Consultant
  • Agentforce Service Consultant
  • Platform Data Architect
  • Platform Development Lifecycle and Deployment Architect
  • Platform Identity and Access Management Architect
  • Platform Integration Architect
  • Platform Sharing and Visibility Architect
  • Heroku Architect
  • B2C Solution Architect
  • Experience Cloud Consultant
  • Agentforce Field Service and Operations Consultant
  • Agentforce Nonprofit Consultant
  • Data 360 Consultant
  • Omnistudio Consultant
  • CRM Analytics and Einstein Discovery Consultant
  • Platform User Experience Designer
  • Platform Strategy Designer
  • B2C Commerce Developer
  • JavaScript Developer
  • Omnistudio Developer
  • Platform Developer II
  • Marketing Cloud Engagement Administrator
  • Marketing Cloud Engagement Specialist
  • Marketing Cloud Engagement Consultant
  • Agentforce Sales Foundations
  • Business Analyst
  • Marketing Cloud Engagement Developer
  • Marketing Cloud Engagement Foundations
  • Agentforce Specialist
  • Agentforce Life Sciences Consultant
  • B2B Commerce Administrator AP
  • B2B Commerce Developer AP
  • Agentforce Consumer Goods AP
  • Agentforce Financial Services AP
  • Agentforce Health AP
  • Agentforce Manufacturing AP
  • MuleSoft Integration Foundations
  • MuleSoft Developer
  • MuleSoft Developer II
  • MuleSoft Platform Integration Architect
  • MuleSoft Platform Architect
  • Tableau Desktop Foundations
  • Tableau Data Analyst
  • Tableau Consultant
  • Tableau Server Administrator
  • Tableau Architect

Checklist progress

0/146Learned

  • Correct cartridge deployment directory structure on a B2C sandbox via WebDAV, specifically the version directory naming convention and where cartridge folders must reside for the storefront to load them
  • Identifying the correct WebDAV URL format for deploying a cartridge to a B2C Commerce sandbox, including protocol, hostname, and path segments
  • WebDAV connection settings required in an IDE (e.g., VS Code with Prophet debugger or Eclipse) to deploy cartridges to a B2C sandbox, including the correct server hostname, version directory path format (/Cartridges/version_X/), and authentication credentials
  • Difference between global (organization-level) and site-specific import units in Business Manager, and which data types (catalogs, pricebooks, customer groups) belong to each scope
  • Business Manager Import/Export file format requirements: the XML schema, archive structure (.zip with meta/ folder), and required file naming conventions for catalog, pricebook, and inventory imports
  • Steps to import product, catalog, or inventory data into Business Manager using the Site Import/Export module, including the required archive format
  • Selecting the correct import unit type (global vs site-specific) when importing data via Business Manager Import/Export
  • Cartridge path resolution order in B2C Commerce: how the platform searches cartridges left-to-right for templates, scripts, and static files, and the implication of cartridge ordering for override behavior
  • Where to configure the cartridge path for a site in Business Manager (Administration > Sites > Manage Sites > site > Settings) and the effect of adding or reordering a cartridge
  • Correct convention for SFRA (Storefront Reference Architecture) cartridge path ordering: custom cartridge before plugin cartridges before app_storefront_base, and the impact of reversing this order
  • Steps to create a new storefront site in Business Manager, including required fields: site ID, site name, default currency, and taxation type (net vs. gross)
  • Difference between net and gross taxation types in B2C Commerce and the business scenarios that determine which one should be configured for a new site
  • Implications of setting the default currency on a new B2C site and the scope at which currency is configured (site vs. organization level)
  • Assigning catalogs, pricebooks, and customer groups to a newly created B2C site via Business Manager Merchant Tools
  • Configuring storefront locale and language settings for a new B2C site, including assigning a locale, setting the default locale, and the effect on URL patterns
  • Assigning payment methods and shipping methods to a newly created B2C site in Business Manager to allow shoppers to complete checkout
  • Consequence of missing catalog, pricebook, or customer group assignments on storefront behavior
  • Standard product and variant product in B2C Commerce: definitions, variation attributes, and when each type is appropriate
  • Relationship between a master product and its variants in B2C Commerce, including how variation attributes (color, size) are defined on the master and inherited by variants
  • Product set and product bundle in B2C Commerce: definitions, attributes, and when each type is appropriate
  • Assigning a product to a category in the navigation catalog vs. the product catalog, and the difference between classification catalog and storefront catalog
  • The role of the online flag and the searchable flag on a product in determining whether it appears in storefront search results and category pages
  • Configuring the product search model in Business Manager: enabling/disabling searchable attributes and category search refinements for the storefront
  • Creating and assigning pricebooks in Business Manager, including the difference between list price pricebooks and sale price pricebooks, and how multiple pricebooks are resolved for a product
  • Configuring inventory lists in Business Manager: how to create an inventory list, assign it to a site, and set stock levels (allocation, preorderAllocation, ATS) for individual products
  • Configuring payment methods in Business Manager: enabling credit card payment and assigning applicable credit card types
  • Linking a payment processor to a payment method in Business Manager to enable shopper checkout
  • Setting up shipping methods in Business Manager: creating a shipping method, configuring base shipping cost, and assigning the method to applicable product/order conditions
  • Configuring order export settings and enabling order management in Business Manager to allow orders to be processed after checkout
  • Difference between a Content Slot and a Content Asset in B2C Commerce and how each is used to deliver content to storefront locations
  • Content Folder hierarchy in Business Manager: how folders organize content assets, and how a content asset is linked to a folder for storefront rendering
  • Creating and managing Content Assets in Business Manager, including assigning a content asset to a content folder and rendering it on a storefront page
  • Types of content slots in B2C Commerce (global, category, folder, product) and the context in which each type is rendered on the storefront
  • Content slot qualifiers in B2C Commerce: customer group, start/end date, and other conditions that determine when content is shown on the storefront
  • Creating a Page Designer marketing page in Business Manager: creating a page, selecting a page type, and adding components to regions
  • Publishing a Page Designer page in Business Manager and the effect on storefront visibility
  • Configuring searchable product attributes in Business Manager site preferences: marking an attribute as searchable, boosting, and setting its search weight for keyword search
  • Configuring the number of search results per page, search index rebuild triggers, and the impact of the search index on storefront product visibility
  • Search boosting and demotion rules in Business Manager: configuring product-level and attribute-level rules to influence storefront search result ranking
  • Sorting rules in Business Manager search configuration: creating and assigning sorting definitions to control how storefront search results are ordered
  • Enabling and configuring synonym dictionaries and common phrases in Business Manager to improve search relevance for specific terms
  • Search redirects in Business Manager: configuring keyword-based redirects that direct specific search queries to a target URL or category page
  • Difference between attribute-based refinements and category refinements in B2C Commerce, and the configuration steps for each type
  • Creating a search refinement definition in Business Manager: selecting the attribute to refine on and choosing refinement type (value, price range, category)
  • Making a search refinement definition available on the storefront after creating it in Business Manager
  • Creating a sorting definition in Business Manager: selecting the sort attribute, sort direction, and assigning the sorting definition to a site so it appears in the storefront sort dropdown
  • Configuring custom log categories and log levels (DEBUG, INFO, WARN, ERROR, FATAL) in Business Manager under Administration > Operations > Log Settings
  • How dw.system.Logger API maps to Business Manager log categories: the relationship between the category string in dw.system.Logger.getLogger() and the log file generated
  • Accessing and downloading log files from Business Manager: navigating to Administration > Operations > Log Files, identifying log file types (custom, system, access), and reading log entries
  • Adding a custom attribute to a system object type (e.g., Product, Order, Customer) in Business Manager under Administration > Site Development > System Object Types
  • Primitive attribute types for system object extensions (string, integer, boolean, date) and when each is appropriate in B2C Commerce
  • Multi-value and enum attribute types for system object extensions (enum-of-string, set-of-string) and when each is appropriate in B2C Commerce
  • Making a custom system object attribute visible in Business Manager search/display groups so that merchandisers can view and edit its value
  • When to use a Custom Object vs. extending a system object in B2C Commerce: use cases where neither a product, customer, nor order attribute is appropriate and a standalone custom object type is required
  • Difference between site-specific and organization-level custom objects in B2C Commerce and when each scope is appropriate
  • Creating a custom object type in Business Manager: defining the key attribute, attribute definitions, and the site/organization scope of the custom object
  • Creating a custom object instance using CustomObjectMgr.createCustomObject() and the need to wrap creation and modification in Transaction.wrap()
  • Querying custom objects using CustomObjectMgr.queryCustomObjects() and accessing results in a script
  • Using the B2C Commerce Code Profiler in Business Manager to identify slow pipelet or script execution, reading profiler output columns (hit count, execution time), and determining which code path to optimize
  • N+1 query pattern as a storefront performance anti-pattern in B2C Commerce and how to identify and resolve it
  • Excessive remote includes as a storefront performance anti-pattern in B2C Commerce and how to identify and resolve it
  • Configuring page/component caching in ISML templates using <iscache> tag attributes (type, hour, minute, varyby)
  • Cache invalidation strategies in B2C Commerce: when to use time-based vs. version-based cache, and how the <iscache> type='relative' vs. type='daily' affects storefront cache TTL
  • Impact of cache configuration on storefront performance: TTL, hit rate, and when to adjust cache settings
  • OCAPI Shop API vs Data API: which operations each supports and typical use cases
  • OCAPI authentication: Shop API (JWT) vs Data API (Business Manager OAuth credentials) requirements
  • Configuring OCAPI settings in Business Manager (Administration > Site Development > Open Commerce API Settings): specifying allowed client IDs, allowed origins, and resource permissions for Shop and Data APIs
  • OCAPI permission configuration format: the JSON structure for client_id, resources array, and methods (get, post, put, patch, delete) including the wildcard resource pattern
  • Granting and restricting OCAPI resource access at the organization vs. site level and the precedence rules when both are configured
  • B2C Commerce Service Registry: its purpose and how services are registered and configured in Business Manager under Administration > Operations > Services
  • Difference between HTTP, FTP, and SOAP service types in B2C Commerce Service Framework and when each is appropriate
  • Service credential configuration in B2C Commerce: the relationship between a service definition and its credential (URL, username, password)
  • Service profile configuration in B2C Commerce: timeout, rate limit, and their relationship to a service definition
  • How the B2C Commerce Service Framework handles mock mode: enabling mock mode in Business Manager and implementing a mock response in the service callback for development/testing without hitting the live endpoint

Given a development task, code ISML templates that use functionality, such as local include, remote include, components, and other ISML tags.

0/1

  • Difference between <isinclude template='...'/> (local include) and <isinclude url='...'/> (remote include) in ISML: caching implications, pipeline/controller invocation, and when to use each

Use debugging best practices and techniques to troubleshoot scripts and controllers and verify outcomes.

0/4

Using the Prophet Debugger (VS Code extension) to set breakpoints in SFRA controller scripts and step through execution on a connected B2C sandbox

Learn this concept
Unseen

Using Business Manager's Request Log and storefront error pages to diagnose controller and template rendering errors, including identifying stack trace information

Learn this concept
Unseen

Reading and interpreting B2C Commerce custom log output for debugging: log levels, log file locations, and correlating log entries to a specific controller execution

Learn this concept
Unseen

Writing defensive code in SFRA scripts to handle null/undefined values from dw API calls, and best practices for verifying API return values before use

Learn this concept
Unseen

Given a requirement, create and extend the functionality of a JavaScript controller that leverages models, decorators, factories, or helpers following API best practices, and renders a template or returns a JSON response.

0/13

  • SFRA controller anatomy: using server.get(), server.post(), server.use(), and server.append() to register routes and middleware functions
  • The req object in SFRA middleware: key properties (querystring, form, currentCustomer, locale) and their use
  • The res object in SFRA middleware: setViewData, getViewData, and their use for passing data to templates
  • Rendering a template from a controller using res.render('templatePath', viewData) vs. returning JSON using res.json(data), and the appropriate use case for each
  • Using next() in SFRA middleware chains: the role of next() to pass control to the next middleware function and what happens if next() is not called
  • SFRA require() module resolution using the ~ (tilde) cartridge-relative path shortcut: how require('*/cartridge/scripts/helpers/myHelper') resolves across the cartridge path
  • server.extend() in SFRA: how a custom cartridge controller must call server.extend(base) using module.superModule before appending, prepending, or replacing routes from the base cartridge
  • SFRA module.superModule pattern: requiring the base cartridge's version of a model/helper and calling its methods to extend functionality without full override
  • Difference between server.replace() and server.append() in SFRA: when to use each to override vs. augment an existing route without modifying the base cartridge
  • server.prepend() in SFRA: adding middleware to run before the existing route handler in a custom cartridge, and the use case for pre-processing or authentication checks
  • Constructing a decorator/model in SFRA by requiring dw API objects, transforming data, and returning a plain JavaScript object for use in the template view data
  • Handling redirects in SFRA controllers: using res.redirect() to issue an HTTP redirect and res.setRedirectStatus() to set the appropriate status code (301 vs. 302)
  • CSRF protection in SFRA controllers: using csrfProtection middleware to validate tokens on POST requests and identifying the consequence of missing CSRF validation

Given a business requirement and design for a new marketing page, develop page types and components to allow a marketer to build a page with the Page Designer tool.

0/8

  • Page Designer page type definition: the required files (page type JSON in experience/pages, render.js script, and ISML template) and the content of each
  • Page Designer component JSON schema structure: id, name, attribute groups, and region configurations
  • Page Designer basic attribute types (string, text, boolean, enum-of-string) and how each is configured in the component JSON definition
  • Page Designer reference attribute types (image, category, product) and how each is configured in the component JSON definition
  • How Page Designer component attributes map to marketer-editable fields in Business Manager
  • Page Designer region configuration in a page type or component: defining min/max number of components in a region and which component types are allowed in that region
  • Page Designer render.js script: how PageMgr.getPage() is used to retrieve a page by ID, and how the page is rendered via res.render() with page context data
  • Rendering a Page Designer component's ISML template: how the component's attributes are passed as content.attributes and how regions are iterated in the component template to render nested components

Given a requirement to accept, validate, and persist information from a storefront customer, modify the appearance of a form, add validation and cross-site request forgery (CSRF) protection, and use bindings to process fields.

0/7

  • B2C Commerce form definition XML: structure of the <form> element, defining <field> elements, and the value-type attribute options
  • Form field validation attributes in B2C Commerce: mandatory, missing-error, and parse-error and their purposes
  • Binding a form definition to an ISML template using <isform> tag and accessing field values via the form object, including rendering validation error messages
  • Server-side form validation in SFRA: using validateFields() and clearFormErrors() on a form object
  • How validation errors from validateFields() are passed back to the template for display in SFRA
  • CSRF token generation and validation in SFRA: how csrfProtection.generateToken() works, where the token is placed in the form, and how csrfProtection.validateRequest() verifies it on POST
  • Persisting customer-submitted form data to a custom object or system object attribute using Transaction.wrap() to ensure data integrity in B2C Commerce

Given localization requirements, implement and enhance templates, form definitions, static files, properties files, and persistent object attributes to ensure that pages are displayed in the expected language.

0/7

  • B2C Commerce properties file structure, location (/cartridge/templates/resources/*.properties), and naming convention for locale-specific overrides (e.g., messages_fr_FR.properties)
  • Using Resource.msg() in an ISML template or server-side script to retrieve a localized string from a .properties file, with the correct method signature: Resource.msg(key, bundle, defaultValue)
  • Fallback resolution order for B2C Commerce properties files when a locale match is not found
  • How request.locale is determined in B2C Commerce and how to retrieve locale-specific content in a controller using request.getLocale() vs. session.getCustomLocale()
  • Localizing form field labels and error messages using properties file keys in the form definition XML <field label='...' missing-error='...'> attributes
  • Locale-specific static files in B2C Commerce: the correct directory structure under /cartridge/static/ for organizing locale-specific CSS, JS, and image assets
  • Localizing custom attribute display names and enum values: configuring the attribute's display name and value descriptions in Business Manager for each supported locale

Given a logging task and existing configuration, write code that logs non-sensitive data to custom log files with different log levels.

0/6

  • dw.system.Logger API: using Logger.getLogger(category, prefix) to obtain a logger instance and calling .info(), .warn(), .error(), .debug() with formatted message arguments
  • Relationship between the log category string passed to Logger.getLogger() and the resulting log file name on the server
  • dw.system.Logger message formatting using {0}, {1} placeholder substitution syntax
  • Why string concatenation should be avoided in dw.system.Logger statements for performance
  • Data types that must NOT be logged per B2C Commerce best practices: PII, payment card data, passwords
  • Consequences of logging sensitive data in B2C Commerce (security, compliance, exposure risk)

Integrate, deploy, and use a service instance based on a given requirement.

0/4

  • B2C Commerce Service Framework: implementing a service callback object with createRequest(), parseResponse(), mockCall(), and filterLogMessage() methods and registering it with LocalServiceRegistry.createService()
  • Configuring HTTP service request parameters in the createRequest() callback: setting request method, headers, and body using the HTTPClient object
  • Calling a registered service from a controller or script using ServiceInstance.call(args) and handling the Result object: checking result.ok, result.object, and result.errorMessage
  • Service framework circuit breaker behavior: how the rate limiter profile setting in Business Manager controls maximum call rate and the behavior when the limit is exceeded

Given a use case, extend functionality or capture an event using hook extension points.

0/5

  • cartridge.json file: its role in registering hook extensions for a cartridge, the required JSON structure, and where it must be placed in the cartridge directory
  • Defining a hook in cartridge.json (hookPath, hookID) and implementing the hook function in the specified script file
  • Using HookMgr.callHook(hookID, hookName, args) in a controller to invoke a registered hook and handling cases where no hook is registered for a given ID
  • Common SFRA hook points (e.g., app.payment.processor.handle, app.payment.processor.authorize) and how to register a custom payment processor implementation via hooks
  • Hook execution order in B2C Commerce when multiple cartridges register the same hookID

Given code that violates documented best practices, identify the issues and modify the code to conform with best practices including performance and scalability.

0/6

  • Proper use of Transaction.wrap() for write operations: identifying code that modifies persistent data without a transaction and the platform behavior (exception) that results
  • Correct use of dw.util.ArrayList and dw.util.HashMap in B2C Commerce scripts, including the API difference from native JavaScript arrays and objects and when platform collection types are required
  • Avoiding hardcoded credentials or URLs in scripts: recognizing violations and the correct approach using site preferences or service credentials
  • B2C Commerce script best practices: avoiding use of deprecated pipeline-based APIs in SFRA controllers, and recognizing when a script uses the legacy pipeline dictionary instead of res/req objects
  • Identifying excessive API calls inside loops as a B2C Commerce performance anti-pattern: recognizing when a ProductMgr.getProduct() or similar call inside an iteration should be batched or cached
  • Memory and performance implications of iterating over large dw.util.Iterator objects vs. converting to an array: best practice for handling large result sets from B2C API calls

Given a business requirement, use OCAPI Shop and Data APIs to enable interoperability with an external system.

0/5

  • Common OCAPI Shop API endpoints: /products/{id}, /product_search, /baskets, /orders — their HTTP methods and the typical use case for each in a headless or external integration scenario
  • OCAPI Shop API authentication: obtaining a JWT token via the /customers/auth endpoint and using it in subsequent API requests via the Authorization header
  • OCAPI Data API authentication: using Business Manager OAuth credentials (client_id + client_secret) to authenticate Data API calls vs. using an Agent User grant for customer-context operations
  • Expanding OCAPI response objects using the expand query parameter and the c_ prefix convention for custom attribute fields in OCAPI responses
  • Implementing an OCAPI hook (OnSession, AfterPOST, BeforeGET, etc.) in a cartridge to customize OCAPI request/response behavior for a specific resource endpoint

Given a business requirement to perform a scheduled task, develop jobs and code job scripts.

0/6

  • Configuring a job in Business Manager: creating a job, adding a job step, setting the step script module reference, and scheduling the job with a cron expression
  • Creating a custom job step script in B2C Commerce: the required script structure with an execute() function, the JobStepExecution parameter, and registering it in Business Manager under Administration > Operations > Job Step Type
  • Job step parameter configuration: defining input parameters (required, optional) for a custom job step type in its metadata, and accessing parameter values in the script via jobStepExecution.getParameterValue()
  • Chunk-oriented job steps in B2C Commerce: the read/process/write execution model and when to use a chunk step vs. a script module step for large data processing
  • Job script best practices: using Transaction.wrap() for data modifications in a job step, handling exceptions to allow the job to report failure status, and using Status objects to return execution results
  • Monitoring job execution in Business Manager: viewing job run history, understanding job status values (OK, ERROR, RUNNING), and accessing the job log output

Prepare for the Exam

Play Today's Certle
Back to track

Study Community

Ask questions and get the latest info from other B2C Commerce Developer studiers.

Go to Discord

Reading and interpreting B2C Commerce custom log output for debugging: log levels, log file locations, and correlating log entries to a specific controller execution

Explainer

Learn More

Practice Question

Keep going

Next conceptWriting defensive code in SFRA scripts to handle null/undefined values from dw API calls, and best practices for verifying API return values before use

Checklist progress

0/146 (0%)

0 of 146 concepts learned

Tip: You can filter concepts by status.

Prepare for the Exam

Play Today's Certle
Back to track

Study Community

Ask questions and get the latest info from other B2C Commerce Developer studiers.

Go to Discord

Explainer

B2C Commerce logs capture system resources, performance, errors, and quotas to aid in troubleshooting scripts and system operations. Developers access these files via Business Manager or WebDAV to correlate specific requests with log entries using identifiers like Session ID and Request ID.

Core information
  • System logs capture system information, performance, errors, and quotas by default, while custom logs require configuration in Business Manager to capture application-specific messages from script files.
More details and nuances
  • Debug logging is disabled on production instances by default, whereas non-production instances allow in-memory logging via the Show Request Log feature.