Over 15K Students have given a five star review to SalesforceKing
Why choose our Practice Test
By familiarizing yourself with the B2C-Commerce-Architect exam format and question types, you can reduce test-day anxiety and improve your overall performance.
Up-to-date Content
Ensure you're studying with the latest exam objectives and content.
Unlimited Retakes
We offer unlimited retakes, ensuring you'll prepare each questions properly.
Realistic Exam Questions
Experience exam-like questions designed to mirror the actual B2C-Commerce-Architect test.
Targeted Learning
Detailed explanations help you understand the reasoning behind correct and incorrect answers.
Increased Confidence
The more you practice, the more confident you will become in your knowledge to pass the exam.
Study whenever you want, from any place in the world.
Start practicing today and take the fast track to becoming Salesforce B2C-Commerce-Architect certified.
2644 already prepared
Salesforce 2026 Release 64 Questions 4.9/5.0
An Order Management System (OMS) handles orders from multiple brand specific sites, as part of the processing, the OMS sends the processing detail to be added at notes to the orders in B2C Commerce. These processing details are captured temporarily in custom objects, and are later processed by a batch Job that:
• Processes the custom object to extract the orderid and note data.
• Tries to load the order.
• If the order is not found, it deletes the custom object and moves on.
• If the order is found, it updates notes In the Order, upon successful update of this order, it deletes the custom object.
There is an Issue reported that the job is constantly failing and custom objects are growing in number. On investigating the production look the message below is being logged on each failure:
What are three solution The Architect can take to fix this issue without losing meaningful data? (Choose 2 answers)
A. Take the backup of the Order as XML and delete the Order to ensure on the next job run, the custom objects are getting processed.
B. Using BM site import/export, soften thewarn to make sure that neither order notes are lost and custom object is processed.
C. Take the backup of the custom object and delete the custom object to ensure on the next job run the custom objects are getting processed.
D. Engage B2C Commerce Support Team to soften the quota limit for ‘’object.OrderPO.relation.notes’’
E. Take the backup of the Order as XML and delete the notes from Order to ensure on the next job run the custom objects are getting processed.
D. Engage B2C Commerce Support Team to soften the quota limit for ‘’object.OrderPO.relation.notes’’ E. Take the backup of the Order as XML and delete the notes from Order to ensure on the next job run the custom objects are getting processed.
Explanation:
A. Take the backup of the Order as XML and delete the Order…
Deleting the entire order just to fix note count is too destructive. Orders are legal, accounting, and customer data — removing them breaks record-keeping and reporting. This is not a valid solution. ✅ Eliminate
B. Using BM site import/export, soften the warn to make sure that neither order notes are lost and custom object is processed.
You cannot “soften” quota errors via Business Manager. A QuotaLimitExceededException is a hard platform limit — not just a warning you can silence in settings or an import/export tweak. ✅ Eliminate
C. Take the backup of the custom object and delete the custom object to ensure on the next job run the custom objects are getting processed.
This would delete the custom object before it can be retried, but that’s not helpful because it loses the meaningful order notes data that the OMS wanted to save. The data would be gone and never written to the order. ✅ Eliminate
D. Engage B2C Commerce Support Team to soften the quota limit for ‘object.OrderPO.relation.notes’.
This is valid. Quotas are sometimes adjustable via Salesforce Support. While some quotas are hard-coded, many object relation quotas can be raised if justified. It’s definitely one avenue an Architect should consider if the business has a legitimate case for storing >1000 notes. ✅ Correct
E. Take the backup of the Order as XML and delete the notes from Order to ensure on the next job run the custom objects are getting processed.
This is practical. Export the order for safekeeping, then remove older or unneeded notes to bring the total below the limit. This frees up quota for new notes to be written, allowing the custom objects to be processed. Data can be re-imported if needed. ✅ Correct
A developer is checking for Cross Site Scripting (XSS) and found that the quick search is
not escaped (allows inclusion of Javascript) in the following script:
How would the developer resolve this issue?
A. Replace 'with doubleQuote*
B. Use < isprint value = " $ { search Phrase } * encoding-'jshtmr / >
C. Use < isprint value = '$ { searchPhrase } encoding - 'jsblock" / >
D. Use < toprint value = "$ { searchPhrase }" / >
B. Use < isprint value = " $ { search Phrase } * encoding-'jshtmr / >
Explanation:
Why?
is the B2C Commerce ISML tag for secure output encoding.
encoding="jshtml" ensures:
HTML entities are escaped (e.g., < → <).
JavaScript injection is prevented (e.g., " → \x22).
This directly fixes XSS in the quick search.
Why Not Other Options?
❌ A. Replace ' with "
Problem: Simply changing quotes does nothing to escape malicious input.
❌ C. encoding="jsblock"
Problem: jsblock is not a valid encoding type in B2C Commerce.
❌ D.
Problem: No such tag exists in B2C Commerce ISML.
Best Practice:
Always use with context-aware encoding:
encoding="html": Basic HTML escaping.
encoding="jshtml": For JS-in-HTML contexts (e.g., inline scripts).
encoding="url": For URL parameters.
Example Fix:
!-- Before (Vulnerable) -->
<script>var searchTerm = '${searchPhrase}';</script>
!-- After (Secure) -->
<script>var searchTerm = '';</script>
An ecommerce site has dynamic shipping cost calculation. it allows the customers to see their potential shipping costs on the Product Detail Page before adding an item to the cart.
For this feature, shipping touts are calculatedusing the following logic:
• Set the shipping method on the Basket
• Add the item to the basket, calculate the basket total and get the shipping cost for this method
• Remove the item from the Basket to restore the original state
• The above process isrepeated for each shipping method
During the testing it was discovered that the above code violates the spi.basket.addResolveInSameResquest quota.
What should the Architect do to resolve this issue and maintain the business requirement?
A. Omit the removal of the Item and speed up the process for the customer by adding the product to the basket for them.
B. Omit the calculation of shipping cost until the customer is ready to check out and has chosen the shipping method they want to
C. Wrap each Individual step of the process its own transaction Instead of using one transaction for all steps.
D. Wrap the adding of product and shipping cost calculation in a transaction which Is then rolled back to restore the original state
D. Wrap the adding of product and shipping cost calculation in a transaction which Is then rolled back to restore the original state
Explanation:
Why Option D?
✅ Respects spi.basket.addResolveInSameRequest Quota
By wrapping the operation in a transaction and rolling it back, the system avoids multiple add/remove calls, which trigger quota violations.
The basket remains unchanged after calculation, maintaining the original state.
✅ Maintains Business Requirement (Pre-Checkout Shipping Estimates)
Customers still see real-time shipping costs on the PDP without permanently altering their cart.
✅ Optimized Performance
Single transaction reduces API calls compared to repeated add/remove cycles.
Why Not Other Options?
❌ A. Omit removal & pre-add the product
Forces items into the cart prematurely, hurting UX (customers may not want them yet).
Does not solve quota issues (still requires multiple basket modifications).
❌ B. Delay shipping calculation until checkout
Breaks the business requirement (customers expect upfront shipping estimates).
❌ C. Wrap each step in separate transactions
Still consumes quota (each add/remove counts against spi.basket limits).
Less efficient than a single rolled-back transaction (Option D).
Best Practice & Reference:
Salesforce B2C Commerce quotas limit spi.basket operations per request.
Transactions with rollback are the standard solution for temporary basket changes.
Example:
var transaction = require('dw/system/Transaction');
transaction.begin();
// Add item, calculate shipping
transaction.rollback(); // Restore original basket
The Client identifies that a segment of customers need to see some products on the site that other customers should not be able to access. All products are maintained within one catalog but in separate categories. A custom attribute will be used on the Profile system object to identify customers that belong to this special segment. A customer group will be made that is qualified for by this Profile custom attribute. The storefront will be customized to include navigation to relevant categories for this customer group.
Unfortunately during technical review the Client points out that the business teams have raised a concern with maintenance and want to use a shared navigation within the catalog and not use separate categories.
Which item should the Architect suggest to efficiently fulfil this new requirement while maintaining scalability?
A. Customize the Storefront Co use a hidden search refinement that if the user Is In the customer group then the result Includes those products with a new custom attribute.
B. CustomizetheStorefront to use separate storefront catalogs with the same navigation that If the customer Is In the customer group gets assign products appropriately.
C. Customize the Storefront to modify the search result that if the user is in the customer group thenthe result includes those products appropriately.
D. Customize the Storefront to use a hidden search refinement and modify the customer group to be qualified for by a new product custom attribute
A. Customize the Storefront Co use a hidden search refinement that if the user Is In the customer group then the result Includes those products with a new custom attribute.
Explanation:
✅ Why these options are correct?
✅ Option A: Customize the Storefront to use a hidden search refinement that if the user is in the customer group, then the result includes those products with a new custom attribute.
Explanation:
This approach is scalable and efficient. The idea is to use a hidden search refinement based on a custom attribute that will be applied only for users in the specified customer group. This method does not require major changes to the catalog or category structure and allows the products to remain in a shared catalog. The refinement filter will ensure that only eligible products for the customer segment appear in search results or on the storefront. This approach efficiently fulfills the requirement without the need for complex modifications, making it easier to maintain and scale in the future.
❌ Why these options are incorrect?
❌ Option B: Customize the Storefront to use separate storefront catalogs with the same navigation that if the customer is in the customer group, gets assigned products appropriately.
Explanation:
Using separate storefront catalogs for different customer groups complicates maintenance, as it introduces redundancy in the catalog management and could require duplication of product listings. Although the navigation remains the same, the need to manage different catalogs increases the complexity and overhead, reducing scalability and maintainability. This solution also diverges from the client's preference to avoid having separate categories for the different customer groups.
❌ Option C: Customize the Storefront to modify the search result that if the user is in the customer group, then the result includes those products appropriately.
Explanation:
This option seems like a valid approach but lacks the precision and control provided by using hidden search refinements. Modifying search results directly based on the customer group may lead to unintended issues in search behavior and result management. Using a hidden search refinement gives more flexibility in managing the visibility of products without changing the search logic directly, making this option less optimal in terms of scalability and control over product visibility.
❌ Option D: Customize the Storefront to use a hidden search refinement and modify the customer group to be qualified for by a new product custom attribute.
Explanation:
While the hidden search refinement is a good solution, modifying the customer group by using a product custom attribute is an additional layer of complexity that may not be necessary. The customer group itself should not need to be modified to include product-specific attributes. The existing method of associating customers with the custom attribute should be sufficient, so introducing another product-level attribute in the customer group qualification process adds unnecessary complexity. This approach is less efficient and scalable compared to the simpler solution in Option A.
While validating a LINK Cartridge for inclusion into the solution, an Architect notices that the UNK cartridge documentation requires the Architect to add a script node to a Pipeline in the storefront cartridge. The script is also a valid CommonJS module. Which approach can the Architect use to Integrate this cartridge into a site that uses Controllers only?
A. Copy and paste the script that is required directly into the Controller, add the appropriate arguments, then execute the correct method
B. Add the script that Is required via a require statement In the Controller, add the appropriate arguments, and execute the correct method.
C. Add the script that is required via a Module, exports statement m the Controller add the appropriate arguments, and execute the correct method.
D. Add the script that is required via an import$cript statement in the Controller, add the appropriate arguments, and execute the correct method.
B. Add the script that Is required via a require statement In the Controller, add the appropriate arguments, and execute the correct method.
Explanation:
✅ Why these options are correct?
✅ Option B: Add the script that is required via a require statement in the Controller, add the appropriate arguments, and execute the correct method.
Explanation:
Since the required script is a valid CommonJS module, the proper way to include and execute this script in a controller-based architecture (as opposed to a pipeline-based one) is to use the require statement. CommonJS modules are designed to be included with require in JavaScript. Once the script is required, the Architect can then add the necessary arguments and call the appropriate methods defined in the module. This approach ensures the modularity and integration of the script without disrupting the controller structure.
❌ Why these options are incorrect?
❌ Option A: Copy and paste the script that is required directly into the Controller, add the appropriate arguments, then execute the correct method.
Explanation:
Copying and pasting the script directly into the controller is not a recommended approach. This method would break the modularity and maintainability of the code. Instead, using require is the best practice to ensure that the script can be easily updated and reused. Directly copying the script would also make it harder to track changes and manage versions.
❌ Option C: Add the script that is required via a Module, exports statement in the Controller, add the appropriate arguments, and execute the correct method.
Explanation:
The exports statement is used for exporting functions or variables in CommonJS modules, but it's not needed when integrating an external script into a controller. The require statement is the correct approach to bring in an external script. Using exports is more relevant to creating your own modules for export, not for including an already existing one.
❌ Option D: Add the script that is required via an import$cript statement in the Controller, add the appropriate arguments, and execute the correct method.
Explanation:
There is no import$cript statement in Salesforce B2C Commerce's JavaScript or CommonJS module system. The correct syntax for importing modules is require in this context, not any form of import$cript. This option is incorrect because the syntax does not align with how modules are imported in B2C Commerce.
Prep Smart, Pass Easy Your Success Starts Here!
Transform Your Test Prep with Realistic B2C-Commerce-Architect Exam Questions That Build Confidence and Drive Success!