Total 202 Questions
Last Updated On : 20-Feb-2026
Universal Containers has expanded its implementation to support German with a locale code of de. The current resource bundle is checkout.properties.
To which file should the developer add German string values?
A. checkout_de.properties in resources folder
B. checkout.properties in the de locale folder
C. checkout.properties in the default locale folde
D. de_checkout.properties in resources folder
Explanation:
Why A is correct
In Salesforce B2C Commerce (SFCC), resource bundles for template-localized text (like checkout labels) are stored in the templates/resources folder of the cartridge. The standard naming convention for locale-specific bundles is to append the language code (or full locale) directly after the base name with an underscore, resulting in files like checkout_de.properties for German (de).
This follows the Java ResourceBundle fallback mechanism used by SFCC: when the request locale is de (or de_DE), the system first looks for checkout_de.properties, then falls back to checkout.properties (default) if needed. Placing the file in the resources folder ensures it is automatically discovered and used by Resource.msg() calls in ISML templates. This is the official, recommended approach for adding German string values without duplicating templates or folders.
Why the other options are incorrect
B. checkout.properties in the de locale folder
→ Resource bundles do not go into locale-specific subfolders like templates/de. Locale-specific templates go there, but resources stay flat in templates/resources.
C. checkout.properties in the default locale folder
→ This would overwrite or duplicate the default English file. The default is checkout.properties (no suffix), and locale-specific files must have the suffix.
D. de_checkout.properties in resources folder
→ The suffix order is wrong. SFCC expects base_locale.properties (e.g., checkout_de), not the reverse locale_base.
References:
Salesforce B2C Commerce Developer Documentation → Localization → Localizing Template Resource Bundles
Trailhead: Localizing Storefront Components in B2C Commerce
Which three configuration does a developer need to ensure to have a new product visible in the
Storefront? Choose 3 answers
A. The product has a Price
B. The Storefront catalog that contains the product is assigned to a site
C. The product has a master product
D. The product is online and searchabl
E. The search index is built.
Tengo dudas con el A. REVISAR
Explanation:
To make a product visible and purchasable on a B2C Commerce storefront, several configuration layers must align.
B. The Storefront catalog that contains the product is assigned to a site
B2C Commerce uses a separation between the Master Catalog (owning the products) and the Storefront Catalog (defining the site structure). Even if a product exists, it won't appear on a specific website unless the Storefront Catalog containing that product is explicitly assigned to that Site in Business Manager.
D. The product is online and searchable
Every product has an "Online" toggle and "Searchable" toggle. If "Online" is false, the product is essentially disabled. If "Searchable" is false, the product will not appear in search results or category listings, even if it is technically online.
E. The search index is built
B2C Commerce does not query the database directly for storefront browsing. It queries a Search Index (Solr). After a product is marked as online and assigned to a catalog, the search index must be rebuilt (manually or via a job) so the index contains the updated product data.
Why the Others are Incorrect
A. The product has a Price – While a product usually needs a price to be purchased, it does not strictly need a price to be visible. A product with no price might show "N/A" or "Price Unavailable" depending on the template logic, but it will still show up in the catalog if the other conditions are met.
C. The product has a master product – This only applies to Variation Products. "Standard" products (standalone items) do not have a master product and can be perfectly visible on their own.
Reference
Salesforce B2C Commerce - Product Visibility Checklist
Rebuilding Search Indexes
A Digital Developer is asked to optimize controller performance by lazy loading scripts as needed instead of loading all scripts at the start of the code execution.
Which statement should the Developer use to lazy load scripts?
A. importPackage () method
B. $.ajax () jQuery method
C. local include
D. require () method
Explanation:
In Salesforce B2C Commerce, the require() method is the correct way to implement lazy loading of scripts. This allows you to load a module only when it's actually needed during execution.
How require() Supports Lazy Loading:
- require() loads a script only when the line is executed.
- Improves controller performance by avoiding loading unused modules during initial execution.
- Can be placed inside route handlers or functions to defer loading.
Example:
server.get('Show', function (req, res, next) {
var basketHelper = require('*/cartridge/scripts/helpers/basketHelper');
basketHelper.processBasket();
next();
});
Why Other Options Are Incorrect:
A. importPackage() – This is for the old Rhino engine and is not supported in CommonJS-based environments like SFCC.
B. $.ajax() – This is a client-side method for sending HTTP requests using jQuery; it has nothing to do with server-side script loading.
C. local include – This is used in ISML templates to include HTML markup or partials, not JavaScript modules.
Best Practice:
Use require() inside route callbacks or functions to load only what is needed, improving performance and reducing memory usage.
A job executes a pipeline that makes calls to an external system. Which two actions prevent performance issues in this situation? (Choose two.)
A. Use synchronous import or export jobs
B. Configure a timeout for the script pipelet.
C. Disable multi-threading.
D. Use asynchronous import or export jobs
Explanation:
Why These Answers Are Correct
External system calls in pipelines require careful handling to prevent performance degradation and system instability:
B. Configure a timeout for the script pipelet
Setting appropriate timeouts prevents pipeline executions from hanging indefinitely when external systems are slow or unresponsive. Timeouts can be configured at the pipelet level in Business Manager or within the script logic itself using dw.system.Session.timeout settings. This ensures that if an external call exceeds the expected duration, the pipeline fails gracefully rather than consuming resources indefinitely, allowing other jobs to proceed.
D. Use asynchronous import or export jobs
For long-running external operations, asynchronous job execution prevents blocking the main pipeline thread. Asynchronous jobs run in the background, allowing the primary pipeline to complete quickly while the external system interaction continues separately. This is particularly important for import/export operations that might involve large data volumes or slow network connections. Asynchronous processing improves overall system responsiveness and prevents timeout issues in user-facing operations.
Together, these approaches create a robust error-handling and performance management strategy for external integrations.
Why Other Options Are Incorrect
A. Use synchronous import or export jobs – Synchronous execution blocks the pipeline until the external call completes, which directly causes performance issues when external systems are slow. This approach contradicts performance optimization goals and can lead to pipeline timeouts and degraded user experience.
C. Disable multi-threading – Multi-threading typically improves performance by allowing parallel processing. Disabling it would generally reduce performance, not prevent issues. While there might be specific thread-safety concerns with some external integrations, disabling multi-threading isn't a standard solution for external call performance problems.
References
Pipeline Development Guide: "Handling External System Calls"
Job Configuration Documentation: "Synchronous vs Asynchronous Job Execution"
Performance Tuning: "Timeout Configuration for External Integrations"
A merchant has a requirement to render personalized content to n a category page via a Content Slot that
targets VIP high-spending customers during a specific promotional period.
Which two items should the developer create to achieve the specified requirements?
Choose 2 answers:
A. VIP Customer Group
B. Page Template
C. Slot Configuration
D. Rendering Template
Explanation:
Why the answers are right
The merchant wants to render personalized content on a category page via a Content Slot that targets VIP high-spending customers during a specific promotional period. This requirement has two distinct targeting dimensions:
- Audience targeting (VIP customers)
- Time-based targeting (promo period)
In B2C Commerce, the standard mechanism for audience targeting in merchandising tools is Customer Groups. A “VIP high-spending customers” segment is naturally represented as a Customer Group (either static or dynamic, depending on how VIP is defined). Once the VIP group exists, Business Manager can use it in targeting rules so the slot content is only shown to those customers.
For content slots, the object that stores rules for where, when, and to whom content appears is the Slot Configuration. Slot configurations can be scoped to contexts (global/category/etc.) and can define scheduling (start/end time) and targeting conditions (like customer groups). In other words, the slot configuration is the “control plane” that ties together: the slot placement, the content asset(s) to display, and the conditions (VIP + promo period) under which that display happens.
So, to meet the requirement, the developer (or merchandiser, depending on permissions) needs:
- A VIP Customer Group to represent the audience; and
- A Slot Configuration that targets that group and is scheduled for the promotional window.
This is also best practice because it keeps personalization in BM configuration rather than hard-coded logic in templates/controllers, allowing business users to adjust promo dates or VIP targeting without code deployments.
Why the other options are incorrect
B. Page Template — Not required. The slot already exists on the category page; you’re changing configuration, not creating a new page structure.
D. Rendering Template — Often you can use existing rendering templates (for content assets). A rendering template becomes necessary when you change the slot “content type” to something custom (like products/recommendations) or need special markup. For “personalized content asset during a period,” the slot configuration + customer group is the essential pair.
References
Manage and create content slot configurations (targeting/scheduling concepts)
Content slot and merchandising concepts overview (slot as configurable content placement)
Universal Containers wants to add a model field to each product. Products will have locale-specific model values. How should the Digital Developer implement the requirement?
A. Utilize resource bundles for translatable values.
B. Set the model field as a localizable attribute.
C. Store translated model values in different fields; one field for each locale.
D. Add model to a new custom object with localizable attributes.
Explanation:
Salesforce B2C Commerce has a built-in feature for attributes called Localization. When defining a Product attribute in the System Object Type (Merchant Tools > Site Genesis > System Object Types > Product), you can check a box labeled "Localizable."
When an attribute is marked as localizable:
- The database creates a storage slot for every locale enabled on the site.
- In Business Manager, the merchant will see a dropdown to select a language (e.g., English, German, French) and enter a different "Model" value for each one.
- In the Storefront, when a user is browsing the German site, the platform automatically retrieves the value associated with the de locale. This is the cleanest and most scalable way to handle translated product data.
Why the Others are Incorrect
A is incorrect: Resource bundles are for static UI text (like "Add to Cart" or "Total"). They are not intended to store dynamic product data like a specific model name for 10,000 different items.
C is incorrect: Creating separate fields (e.g., model_en, model_de) is an "anti-pattern." It makes the code very difficult to maintain, as you would need complex if/else logic to determine which field to display, and it doesn't scale as you add more languages.
D is incorrect: Creating a new custom object for a single product field is massive overkill. It complicates data imports and slows down page load times due to extra database lookups.
Reference
Salesforce B2C Commerce - Localizable Attributes
A Digital Developer must resolve a performance issue with product tiles. The Developer determines that the
product tiles are NOT being cached for a long enough period.
Which two methods can the Developer use to verify the cache settings for the product tiles? (Choose two.)
A. Enable cache information in the storefront toolkit and view the cache information for the product tile.
B. View the cache information provided by the Merchant Tools > Technical Reports Business Manager
C. View the product list page cache settings provided in the Administration > Manage Sites Business
Manager module.
D. Enable the template debugger to verify the cache times for the producttile.isml template.
Explanation:
To resolve performance issues in Salesforce B2C Commerce, especially when product tiles are not being cached long enough, it’s important for developers to verify where caching is configured and how it is behaving. Product tiles are rendered frequently across the site, and inefficient caching can lead to performance bottlenecks. The following two methods are effective ways to verify cache settings:
✅ Correct Answers:
A. Enable cache information in the storefront toolkit and view the cache information for the product tile.
The Storefront Toolkit provides developers with a way to inspect cache behavior directly in the storefront. By enabling cache information, the developer can:
See if a tile is cached
View cache hit/miss status
Check cache lifespan and ID
This is a direct method to confirm whether the product tile is being cached and for how long.
C. View the product list page cache settings provided in the Administration > Manage Sites Business Manager module.
Within Business Manager, under Administration > Sites > Manage Sites, developers can view and edit cache settings for pages, including the product list page. This section controls:
How long different page types are cached
What components (e.g., product tiles) are cached
Cache behavior by pipeline or controller
This helps ensure that the correct cache duration is configured for product tiles rendered on category or search result pages.
❌ Incorrect Options:
B. View the cache information provided by the Merchant Tools > Technical Reports Business Manager
Technical Reports are used to analyze job execution, logs, and system performance, but they do not provide visibility into product tile cache settings or durations.
D. Enable the template debugger to verify the cache times for the producttile.isml template
The Template Debugger is helpful for viewing template rendering and data passed to ISML files, but it does not display cache timing or metadata. It’s intended more for logic flow and variable inspection than cache diagnostics.
Which code sample is required to use a custom tag provided in SiteGenesis in an ISML template?
A. Option A
B. Option B
C. Option C
D. Option D
Explanation:
Since the actual image with options A-D isn't visible in your message, I'll provide the general principle. In B2C Commerce, to use a custom tag from SiteGenesis (or any cartridge) in an ISML template, you must import it using the
The correct syntax is:
< isimport taglib="/path/to/taglibrary.tld " >< / isimport >
For SiteGenesis custom tags, the path would typically reference the cartridge containing the tag library. Option B would be the one showing this correct import syntax.
Why This Would Be Correct
Custom tag libraries in B2C Commerce extend ISML's functionality with reusable components. The import statement makes the custom tags available within the template scope. Without proper import, custom tags generate compilation errors. The import directive must specify the exact path to the Tag Library Descriptor (.tld) file, which defines the available tags and their attributes. This approach allows code reuse across templates while maintaining namespace separation.
Why Other Options Would Be Incorrect
- Options showing
- Options with incorrect paths – Must point to actual .tld file location
- Options missing import entirely – Custom tags won't be recognized
- Options using scriptlet syntax – Not the correct mechanism for tag library imports
References
ISML Developer Guide: "Custom Tag Library Implementation"
Universal Containers wants to change a content slot that is currently configured to display a content asset. Now they want the slot to display the top five selling boxes for the week.
Which two changes need to be made for this to occur? (Choose two.)
A. Change the slot’s configuration content type to “products.”
B. Change the slot’s configuration content type to “recommendations.”
C. Change the slot’s configuration template to the appropriate rendering template.
D. Delete the existing content asset
Explanation:
Universal Containers wants to switch from showing a static content asset to dynamic product recommendations (top 5 selling boxes for the week). This requires:
✅ B. Change the slot’s configuration content type to “recommendations.”
The slot must now use Einstein Product Recommendations.
This content type enables dynamic product lists based on strategies like top sellers, recent views, or affinity.
The “recommendations” type is specifically designed to pull data from Einstein algorithms.
✅ C. Change the slot’s configuration template to the appropriate rendering template.
The ISML template used for rendering must support product recommendations.
It should loop through the slotcontent.content collection and render each product appropriately.
Example template logic:
< isloop items = " $ {slotcontent . content } " var = " product " >
< isprint value = " $ { product . name } " >< / isprint >
< / isloop >
❌ Why the other options are incorrect
❌ A. Change the slot’s configuration content type to “products.”
This would be used for manually selected products, not dynamic recommendations.
It doesn’t leverage Einstein’s algorithms.
❌ D. Delete the existing content asset.
Not necessary. You can simply disable or replace the slot configuration.
Content assets can coexist with other configurations and be reused elsewhere.
A Digital Developer needs to add logging to the following code:
Which statement logs the HTTP status code to a debug-level custom log file?
A. logger.getLogger(‘profile’).debug("Error retrieving profile email, Status Code: ", http.statusCode);
B. logger.debug("Error retrieving profile email, Status Code: {0} was returned.", http.statusCode);
C. Logger.getLogger().debug("Error retrieving profile email, Status Code: {0} was returned.",
http.statusCode);
D. Logger.getLogger(‘profile’).debug("Error retrieving profile email, Status Code: {0} was returned.",
http.statusCode);
Explanation:
Why Answer D is Correct
D. Logger.getLogger('profile').debug("Error retrieving profile email, Status Code: {0} was returned.", http.statusCode);
This statement is correct because it follows the three main requirements for custom logging in B2C Commerce:
- Category Assignment: Logger.getLogger('profile') creates or retrieves a logger for a specific category named "profile." This allows the log to be written to a specific file (e.g., custom-profile-xxxx.log) if configured in Business Manager.
- Level and Formatting: The .debug() method sets the severity. The use of {0} is the standard MessageFormat pattern used by the B2C Commerce Logger. The platform replaces {0} with the first argument provided after the string (in this case, http.statusCode).
- Correct Object: It uses the capital Logger (the class) to access the static getLogger method.
Why the Others are Incorrect
- A is incorrect: It tries to pass the status code as a second string argument without a placeholder. The .debug() method in B2C Commerce Script API expects a single string or a string with placeholders.
- B is incorrect: It uses logger (lowercase), which implies a variable that may not be defined. Furthermore, calling .debug() on the root logger without a category makes the log much harder to find in a production environment.
- C is incorrect: While it uses the correct Logger class, it doesn't specify a category in getLogger(). Best practice is always to provide a category string to ensure logs are organized and filterable.
Reference
dw.system.Logger API Class
Logging Best Practices
| Page 4 out of 21 Pages |
| 1234567 |
| Salesforce-B2C-Commerce-Cloud-Developer Practice Test Home |
Our new timed Salesforce-B2C-Commerce-Cloud-Developer practice test mirrors the exact format, number of questions, and time limit of the official exam.
The #1 challenge isn't just knowing the material; it's managing the clock. Our new simulation builds your speed and stamina.
You've studied the concepts. You've learned the material. But are you truly prepared for the pressure of the real Salesforce Certified B2C Commerce Cloud Developer - Comm-Dev-101 exam?
We've launched a brand-new, timed Salesforce-B2C-Commerce-Cloud-Developer practice exam that perfectly mirrors the official exam:
✅ Same Number of Questions
✅ Same Time Limit
✅ Same Exam Feel
✅ Unique Exam Every Time
This isn't just another Salesforce-B2C-Commerce-Cloud-Developer practice questions bank. It's your ultimate preparation engine.
Enroll now and gain the unbeatable advantage of: