LINK Certification Guide
LINK Certification Guide
LINK Certification Guide
Training Requirement 3
Git 3
Starting Development 3
SiteGenesis Integrations 4
Storefront Reference Architecture (SFRA) Integrations 4
Documentation 10
Certification Process 11
Getting Access to the GitHub Repositories 11
Creating a GitHub account 11
Access to Partner Repositories 11
Getting Access to the Partner Community 12
Prerequisites to Certification 12
Submitting for Certification 13
Cartridge Demo 16
Certification Testing 16
Officially Certified! 17
Bug Fixes 17
New Features 17
Cartridge Expiration 17
FAQ / Questions? 17
Training Requirement
Any partner submitting a cartridge for certification must have a certified B2C Commerce
Developer on their team. A partner may use a certified B2C Commerce SI (Systems
Integrators) to satisfy the requirement.
If a partner does not want to use an SI, they will need to have one of their technical staff
acquire the Salesforce Certified B2C Commerce Digital Developer credential. Information
about the credential can be found here:
http://certification.salesforce.com/commerceclouddigitaldeveloper.
If the individual earned their credential on or before April 8, 2018, they can take the B2C
Commerce Digital Developer Maintenance Exam to have an updated and valid credential.
More information about the maintenance exam can be found here: https://sfdc.co/rF03f. To
confirm the credential is valid, this verification tool can be used:
http://certification.salesforce.com/verification.
Git
LINK Technology Partners and Solution Partners should read the LINK Git Instructions
document, which can be found in the Salesforce Partner Community (search for
#CC_Cartridge) before starting development. The LINK Git Instructions document outlines
the workflows that must be followed by partners when developing and submitting their
cartridges. B2C Commerce will not review any cartridges that are submitted without
correctly following the LINK_[partner] workflow as outlined in the LINK Git Instructions
document.
Starting Development
B2C Commerce LINK partners should develop integration cartridges in the sandbox they
requested upon joining the program. A standard SiteGenesis or SFRA storefront should be
created and used for integration. The integration model that B2C Commerce LINK cartridges
should follow is to place as little code into the SiteGenesis storefront cartridge as is
necessary and absolutely no changes in the SFRA base storefront. The vast majority of the
code in the integration should reside in the integration cartridge. This makes the rollout of
future versions of the cartridge to customers as streamlined as possible.
As of August 1, 2019, any cartridge submitted for certification will need to be
SFRA compatible. Until then, a controllers only cartridge is acceptable. It is also currently
acceptable to have a SFRA only cartridge if preferred.
Versioning
The version number of all integrations will be the year in which the certification was
completed and the number of versions released that year. For example, if the first certified
version of a cartridge is in 2019, the version would be 19.1.0. Any subsequent certified
versions of the cartridge in 2019 would be 19.2.0, 19.3.0, etc. Minor bug fixes or
documentation changes will be noted with a minor release number such as 19.1.1. Overall,
the version naming convention is [year].[certified version of the year].[update].
Note: there is no correlation between the B2C Commerce platform release and the
integration cartridge version. If a partner submits their first certification request in 2019
when the current platform release is 19.3.0, the version of the integration will still be
19.1.0.
Web Services
B2C Commerce requires that all web service calls be implemented using the web service
framework located in the Business Manager. This includes any use of HTTPClient, FTPClient,
SFTPClient, or WebDAVClient.
For more information, refer to:
https://documentation.b2c.commercecloud.salesforce.com/DOC1/topic/com.demandware.d
ochelp/WebServices/Webservices.html
With integrations that handle PCI or PII data, ensure that additional callbacks have been
implemented using filterLogMessage or both getRequestLogMessage and
getResponseLogMessage.
For more information, refer to:
ttps://documentation.b2c.commercecloud.salesforce.com/DOC1/topic/com.demandware.doc
help/DWAPI/scriptapi/html/api/class_dw_svc_ServiceCallback.html
Jobs Framework
B2C Commerce requires that all jobs be implemented using the jobs framework that is part
of the B2C Commerce platform release 17.1. This framework has replaced the previous
jobs framework and integration framework.
Custom Objects
Custom objects should only be leveraged to store configuration data and not transactional
data. Data from objects such as baskets, orders, page views, etc. should never be stored in
custom objects. Operations that generate a high volume of objects created and deleted
should also be avoided even if they do not violate the quota for the total number of custom
objects.
The reasons for this are:
● There is a quota of 400,000 custom objects per realm which is shared among all
sites and integrations in the realm. If this quota is exceeded no more custom
objects can be created.
● Custom objects, unlike System Objects, are not optimized for database access.
Relying on custom objects for high-performance access will cause database churn
and a poor customer experience
Custom objects are most efficiently employed for holding static data which is referenced
only occasionally (once per session, for instance).
Code Documentation
All .ds and .js files must contain a summary at the top of the file that outlines the
functionality included in the script. Longer script files should contain brief summaries for
each function.
Externalization
All strings in templates should be externalized in properties files. There should not be any
static text appearing in templates.
SGJC Integrations
In order to ensure that upgrading LINK cartridges does not override a customer custom
storefront, the LINK cartridge must be after SiteGenesis in the cartridge path. In other
words, installing a LINK cartridge in the cartridge path shouldn’t be overriding higher-level
customizations.
SFRA Integrations
One of the implications of having models produce JSON data which is consumed by views is
that the SFRA cartridge (app_storefront_base) can truly be a “base” cartridge that serves as
a foundation for additional layers of customization cartridges.
This means that instead of modifying the reference application as was done with
SiteGenesis, SFRA expects that the app_storefront_base cartridge will NOT be
modified by LINK partners or clients. The expectation is that all customizations take
advantage of the cartridge hierarchy and overlay functionality on top of the base cartridge.
SGJC Integrations
Any code snippets that need to be placed in the header should instead be placed in the
footer. By doing so, this allows the storefront to completely load before the partner’s
cartridge.
External Authentication
Any solution providing external authentication for logins to a B2C Commerce merchant site
should implement OAUTH as documented here:
● http://oauth.net/2/
● https://documentation.demandware.com
B2C Commerce will not certify any integration that includes any of the following techniques:
● Resetting the user’s password on each login
● Storing the user’s password in an external location
● Using an algorithm to generate a password that is not stored in an external location
but can be calculated for each login
Firewall Rules
LINK integrations requiring firewall rule changes for outgoing traffic from a merchant’s B2C
Commerce instance should limit their IP ranges to a reasonable number of addresses. B2C
Commerce will not permit whitelisting entire blocks of IP addresses or many different IP
addresses.
Minimizing Vulnerabilities
Cross-Site Scripting (XSS) is an OWASP identified security flaw present in many modern
websites. One way to minimize the vulnerability of a website is to properly encode any
output that a user might have entered such as names, addresses, etc.
In B2C Commerce, a common defense is accomplished by never allowing encoding=”off” in
an <isprint> statement in ISML files. encoding=”off” should be replaced by an appropriate
encoding type as seen in
https://documentation.demandware.com/DOC1/topic/com.demandware.dochelp/ISML/isprin
t.html
For more general defense against XSS and XSRF (Cross-Site Request Forgery), refer to the
following documentation:
● https://xchange.demandware.com/docs/DOC-33873
● https://xchange.demandware.com/docs/DOC-33798
PCI Compliance
B2C Commerce reviews all LINK integrations for PCI DSS best practices. B2C Commerce
does not make any claims regarding PCI DSS compliance in LINK integrations. PCI DSS
compliance in LINK integrations is entirely the responsibility of the LINK technology partner
that owns the integration and the merchant implementing the integration on their site.
Integration Guide
B2C Commerce requires documentation to be submitted with all LINK cartridges prior to
review by B2C Commerce for certification. The LINK Integration Documentation Template
may be used by partners and can be found in the Salesforce Partner Community
(#CC_Cartridge).
B2C Commerce does not require that partners use the standard template; however, all
relevant topics in the document must be included in the documentation that is submitted by
partners with the cartridge. The cartridge will be rejected if B2C Commerce considers the
documentation inadequate or incomplete.
The integration steps should be very detailed so that it is clear for someone without prior
knowledge of the cartridge to perform the integration.
Partners should take particular note of the following documentation requirements:
● The version number should be the same as the cartridge version using the version
naming convention [year].[certified version of the year].[update].
● The documentation should include all necessary steps to setup the cartridge with
minimal help from the partner. The four main steps should be:
○ Adding the cartridge to the cartridge path
○ Importing the metadata
○ Updating settings for credentials, enabling the cartridge, etc
○ Updating and adding code to the storefront
● Any code added to the storefront must be clearly explained as to where to place it.
B2C Commerce recommends taking a screenshot of where the code is added to the
file and including it in the guide.
● Clearly identify any limitations or known issues so that they are clear to B2C
Commerce customers who are evaluating the cartridge for use in their storefront.
● If the cartridge is a payment cartridge, there should be a bullet point list of all
supported payment types included in the functionality section.
Prerequisites to Certification
This a list of items that need to be done prior to submitting for certification. If any of these
items are missing, the LINK Technology will deny starting the certification until they are
finished:
● Present the certification of the required B2C Commerce Developer.
○ The way the LINK team verifies the developer is by using
https://trailhead.salesforce.com/credentials/verification. Please provide the
email address associated with the certification
○ If the email address is correct, but is not showing up in the verification site,
ensure that "Verification Opt-In:" is set to yes on the Webassessor account
profile
● Update the Salesforce hosted LINK_[partner] repository with the latest version of the
2. This leads to the “Support” page where new cases can be filed and all previously filed
cases can be seen. Select the “New Case” button to file a new case
3. On the “New Case” page, locate the “LINK Technology Partners” link in the
“AppExchange Partners (ISV)” section.
Cartridge Demo
As of June 2019, the demo will consist of the partner both setting up the cartridge and
demoing the functionality.
For a complete guide on how to schedule, prepare, and present for the demo, please read
the LINK Certification Demo Guide.
Certification Testing
During the demo, a sprint date will be given as to when the LINK Technology Team will
begin the certification process. Until this date, the partner does not need to do anything
further with certification unless specified in the demo or ticket. The LINK Certification Team
will add a comment that will note the week the certification will begin.
To make sure that all communications between the B2C Commerce team and the partner
are visible and not lost in emails, please use the ticket for all communications during the
certification process. Email is unhelpful because the B2C Commerce team consists of
several individuals who all need to access the message stream. For instance, to see the
status of a certification, this is captured in the ticket.
The LINK Technology Team will perform the following steps to certify the cartridge:
1. B2C Commerce will perform a full functional test of the cartridge based on the test
cases in the test case documentation provided by the partner. B2C Commerce will
request support from the partner if any of the use cases cannot be successfully
completed.
2. B2C Commerce will review the code to verify that it follows the requirements in the
development style guide. B2C Commerce will provide feedback to the partner via the
ticket if any changes are necessary.
The partner should be available for technical support if required. B2C Commerce reserves
the right to move the cartridge back to the start of the certification queue if the partner
does not respond promptly to technical or business questions during certification testing.
Please note: the LINK Technology Team does not receive updates when the repositories are
updated, so comment on the ticket if a new commit or fix is available.
Bug Fixes
If a small bug is found, the fix must be submitted in the repository in the master branch.
Then, a new ticket can be created using the following fields:
● Severity
● Subject - [Cartridge Name] Bug Fix
● Subtopic: LINK Technology Program Support
● Description:
○ Enter all bugs found and how they were fixed
○ B2C Commerce certified developer on the team or the SI that helped with the
fix
○ The URL to the repository containing the cartridge
New Features
Any new features a partner would like to add to the integration must go through another
certification. The LINK Certification Team highly recommends including as many new
features as possible within a certification to avoid having to certify the entire integration
again for each new feature.
Cartridge Expiration
A cartridge that is certified by B2C Commerce shall be considered ‘certified’ for a period of
one year from the date that the certification is completed and the integration is posted to
the marketplace. The cartridge certification shall be considered ‘expired’ exactly one year
after the certification is completed. The partner must either repeat the certification process
with an existing version of a cartridge or provide a new version to be certified in order to
have a cartridge listed in the marketplace once a cartridge certification has expired.
The fields in the partner’s space in the marketplace will be modified to reflect the fact that
the integration is not certified by B2C Commerce and is not currently available for download
if the cartridge is beyond its expiration date.
FAQ / Questions?
1. Use the Salesforce Partner Community to ask questions and see all the documents
referenced in this guide.