Exam Overview
| Exam Code | B2B-Commerce-Developer |
| Exam Name | Salesforce Accredited B2B Commerce Developer |
| Vendor | Salesforce |
| Total Questions | 221 |
| Last Updated | 26-Oct, 2026 |
Why CertsPoint?
- Latest & Verified Questions
- Detailed Explanations
- Regular Updates
- Full-Length Practice Tests
- Boost Your Exam Confidence
PDF Study Materials
Downloadable guides and resources
Practice Tests
Full-length tests with real exam experience
Progress Tracking
Monitor your performance and improvement
Study Anywhere
Access on desktop, tablet, and mobile
Secure Payment
Privacy Protected
Money Back Guarantee
Free B2B-Commerce-Developer Practice Questions
Explore 9 free practice questions for the Salesforce B2B-Commerce-Developer exam and review the answers and explanations to support your preparation.
-
Question 1
Single answerHow are version related upgrades passed on to subscriber API extensions/overrides?
-
Option A:Correct
APIs callback with specific versions specified; the user must know which version number to use.
-
Option B:Correct
Copy and paste of specific code is "built-in"
-
Option C:Correct
Extensions and overridden APIs don't support-related upgrades.
-
Option D:Correct
The "delegate" allows inherited method calls access to the most recentlyspecified service version
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: D
Explanation
Version related upgrades are passed on to subscriber API extensions/overrides by using the
“delegate” keyword, which allows inherited method calls access to the most recently specified
service version. For example, delegate.getCart() will invoke the getCart() method of the latest service
version that is available for the current storefront. This way, extensions and overrides can leverage
the new features and enhancements of the upgraded service versions without modifying their code. -
-
Question 2
Single answerHow are variables bound when services use the ccSercviceDao classto execute queries?
-
Option A:Correct
Global variables
-
Option B:Correct
Apex local variables
-
Option C:Correct
String substitution
-
Option D:Correct
Apex class variables
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: C
Explanation
When services use the ccServiceDao class to execute queries, variables are bound by string
substitution. This means that the query string contains placeholders for variables that are replaced by
their values at runtime. For example, ccrz.ccServiceDao.getQuery('SELECT Id FROM Account WHERE
Name = :name') will replace :name with the value of the name variable. -
-
Question 3
Multiple answersFor which two reasons is it preferable to extend the Salesforce B2B Commerce remote invocation
object instead of using the standard Salesforce remote action invocation manager (2 answers)-
Option A:Correct
A standard remote action will not have access to Salesforce B2B Commerce objects.
-
Option B:Correct
The APEX method called by the remote action will be passed as a Salesforce B2B Commerce
context object. -
Option C:Correct
Salesforce B2B Commerce includes do not support standard SalesForce remote actions.
-
Option D:Correct
The Salesforce B2B Commerce logger cannot be utilized in standard remote actions
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: B, D
Explanation
It is preferable to extend the Salesforce B2B Commerce remote invocation object instead of using the
standard Salesforce remote action invocation manager for two reasons:
The APEX method called by the remote action will be passed as a Salesforce B2B Commerce context
object, which contains useful information such as the current user, cart, storefront, and configuration
settings. This can simplify the development and testing of the remote action.
The Salesforce B2B Commerce logger can be utilized in the remote action, which allows logging
messages and errors to the debug log or to a custom object. This can facilitate debugging and
troubleshooting of the remote action. -
-
Question 4
Single answerA developer is trying to troubleshoot why a field is not displaying on the Product Detail Page. What
should be typed in the Developer Tools Console in the browser to view the fields available for the
Product Detail Page?-
Option A:Correct
CCRZ.productSearchView
-
Option B:Correct
CCRZ.cartView
-
Option C:Correct
CCRZ.productDetailModel
-
Option D:Correct
CCRZ.productDetailView
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: C
Explanation
To view the fields available for the Product Detail Page, the developer should type
CCRZ.productDetailModel in the Developer Tools Console in the browser. This will display the
product detail model object, which contains the product data and attributes that are rendered on the
page. The other options are either not valid or not relevant for the Product Detail Page. -
-
Question 5
Single answerA Developer created a custom field that a project wants to expose on a given page.
How does the Developer ensure that the field is available to display on a given page?-
Option A:Correct
Override the Service Class that the page uses and update the ServiceManagementin CCAdmin for
the given storefront to use this new Service Class. -
Option B:Correct
Override the Logic Class that the page uses and update the Service Management inCCAdmin for
the given storefront to use this new Service Class -
Option C:Correct
Create a new Service Classthat the page uses and update the Service Managementin CCAdmin for
the given storefront to use this new Service Class -
Option D:Correct
Create a new Logic Class that the page uses and update the Service Managementin CCAdmin for
the given storefront to use this new Service Class
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: A
Explanation
To ensure that a custom field is available to display on a given page, the Developer needs to override
the Service Class that the page uses and update the Service Management in CCAdmin for the given
storefront to use this new Service Class. The Service Class is responsible for retrieving and setting
data for a given page. The Logic Class is responsible for implementing business logic and validation
rules for a given page. Creating a new Service Class or Logic Class is not necessary, as overriding an
existing one can achieve the same result. Salesforce Reference: B2B Commerce and D2C Commerce
Developer Guide, Service Classes, Logic Classes -
-
Question 6
Single answerA configuration value, CO.NewOrder, is set to TRUE. What is one way of
preventing anexisting payment page from being shown on the checkout payment page?-
Option A:Correct
Delete the Visualforce page from the code base.
-
Option B:Correct
Remove the value matching the page name from the pmt.whitelist configurationsetting, then
rebuild and activate a new Configuration cache -
Option C:Correct
Remove the payment type associated with the payment page from CO.pmts, thenrebuild and
activate a new cache. -
Option D:Correct
Override the front end template and modify the way the embedded payment page getsloaded
from the payment list configuration.
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: B
Explanation
This approach effectively removes the payment page from the list of allowed pages, ensuring it is not
displayed during the checkout process.
Reference: Salesforce B2B Commerce documentation on checkout process customization and
configuration settings, specifically focusing on payment page handling and the pmt.whitelist setting.
This approach effectively removes the payment page from the list of allowed pages, ensuring it is not
displayed during the checkout process.
Reference: Salesforce B2B Commerce documentation on checkout process customization and
configuration settings, specifically focusing on payment page handling and the pmt.whitelist setting.
The pmt.whitelist configuration setting in Salesforce B2B Commerce is used to manage the
Visualforce pages that support all payment types on the storefront1. If you want to prevent an
existing payment page from being shown on the checkout payment page, one way to do it is to
remove the value matching the page name from the pmt.whitelist configuration setting. After doing
this, you would need to rebuild and activate a new Configuration cache for the changes to take
effect1. Please note that this information is based on the Salesforce B2B Commerce documentation
and best practices1. -
-
Question 7
Single answerThe ccUtil apex class in Salesforce B2B Commerce provides numerous utility
functions that can be leveraged in subscriber classes. Which command will
return the value in the given Map if found or a default value in the event that
the Map is null, empty, or an object is not found for that key?-
Option A:Correct
ccrz.ccUtil.defv (Map<String.Object> mp, String key , Object ob)
-
Option B:Correct
ccrz.ccUtil.defVal (Map<String.Object> mp, String key, Object ob)
-
Option C:Correct
ccrz.ccUtil.. (Map<String.Object> mp, String key, Object ob)
-
Option D:Correct
ccrz.ccUtil.defaultValue(Map<String.Object> mp, String key , Object ob)
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: B
Explanation
The ccrz.ccUtil.defVal (Map<String.Object> mp, String key, Object ob) method will return the value in
the given Map if found or a default value in the event that the Map is null, empty, or an object is not
found for that key. This method is useful for providing fallback values for configuration settings or
input parameters that may be missing or invalid. Salesforce Reference: B2B Commerce and D2C
Commerce Developer Guide, ccUtil Class -
-
Question 8
Multiple answersThe ccUtil apex class in Salesforce B2B Commerce provides numerous utility
functions that can be leveraged in subscriber classes.
What are two ways to check the input or return data of the Global API's? (2 answers)-
Option A:Correct
ccrz.ccUtil.isNotEmpty(Map<String, Object>) andccrz.ccUtil.isNotEmpty(List<Object>)
-
Option B:Correct
ccrz.ccUtil.isNotValid(Map<String, Object>) andccrz.ccUtil.isNotValid(List<Object>)
-
Option C:Correct
ccrz.ccUtil.isValid(Map<String, Object>) and ccrz.ccUtil.isValid(List<Object>)
-
Option D:Correct
ccrz.ccUtil.isEmpty(Map<String, Object>) and ccrz.ccUtil.isEmpty(List<Object>)
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: A, D
Explanation
The ccUtil apex class provides two methods to check the input or return data of the Global API’s:
ccrz.ccUtil.isNotEmpty(Map<String, Object>) and ccrz.ccUtil.isEmpty(Map<String, Object>). These
methods return true if the map is not null and contains at least one entry, or if the map is null or
empty, respectively. Similarly, ccrz.ccUtil.isNotEmpty(List<Object>) and
ccrz.ccUtil.isEmpty(List<Object>) return true if the list is not null and contains at least one element,
or if the list is null or empty, respectively. These methods are useful for validating the input
parameters or the output results of the Global API’s. -
-
Question 9
Multiple answersAlthough Salesforce B2B Commerce and Salesforce recommend against using
"without sharing classes" whenever possible, sometimes it is unavoidable. Which three
items will open up a major security hole? (3 answers)-
Option A:Correct
Executing dynamic SOQL inside a without sharing class with a bind variable
fromPageReference.getParameters(). -
Option B:Correct
Executing dynamic SOQL inside a without sharing class with a bind variable from theUserInfo class.
-
Option C:Correct
Executing dynamic SOQL inside a without sharing class with a bind variable
fromPageReference.getCookies(). -
Option D:Correct
Executing dynamic SOQL inside a without sharing class with a bind variable
fromcc_RemoteActionContentex class. -
Option E:Correct
Executing dynamic SOQL inside a without sharing class with a bind variable
fromccAPI.CURRENT_VERSION.
Show Answer & Explanation Hide Answer & Explanation
Correct Answer: A, C, D
Explanation
Executing dynamic SOQL inside a without sharing class with a bind variable from
PageReference.getParameters(), PageReference.getCookies(), or cc_RemoteActionContext class will
open up a major security hole because these sources of input are not sanitized and can be
manipulated by malicious users to inject SOQL queries that bypass the sharing rules and access data
that they are not supposed to see. For example, a user can modify the URL parameters or cookies to
include a SOQL query that returns sensitive data from the database. To prevent this, it is
recommended to use static SOQL or escape the bind variables before executing dynamic SOQL. -