AD0-E718 Practice Exam — Free Adobe Certification Prep
Ask AstroTutor
A company wants to build an Adobe Commerce website to sell their products to customers in their country. The taxes in their country are highly complex and require customization to Adobe Commerce. An Architect is trying to solve this problem by creating a custom tax calculator that will handle the calculation of taxes for all orders in Adobe Commerce.
How should the Architect add the taxes for all orders?
AWrite a before plugin to \Magento\Quote\Model\QuoteManagement::placeOrder() and add the custom tax to the quote
BDeclare a new total collector in “etc/sales.xml” in a custom module
CAdd a new observer to the event “sales_quote_collect_totals_before” and add the custom tax to the quote
0
Question 2
Adobe Commerce Master
0
Question 3
Adobe Commerce Master
0
Question 4
Adobe Commerce Master
0
Question 5
Adobe Commerce Master
0
That's the end of the Preview
This exam has 50 community-verified practice questions. Create a free account to access all questions, comments, and explanations.
An Adobe Commerce Architect is creating a new GraphQL API mutation to alter the process of adding configurable products to the cart. The mutation accepts configurable product ID. If the given product has only one variant, then the mutation should add this variant to the cart and return not nullable Cart type. If the configurable product has more variants, then the mutation should return not nullable ConfigurableProduct type.
The mutation declaration looks as follows:
How should the Adobe Commerce Architect declare output of this mutation?
A
B
C
An Architect working on a headless Adobe Commerce project creates a new customer attribute named my_attribute. Based on the attribute value of the customer, the results of GraphQl queries are modified using a plugin. The frontend application is communicating with Adobe Commerce through Varnish by Fastly, which is already caching the queries that will be modified. The Adobe Commerce Fastly extension is installed, and no other modifications are made to the application.
Which steps should the Architect take to make sure the vcl_hash function of Varnish also considers the newly created attribute?
ACreate a new class inheriting from Magento\Framework\GraphQl\Query\Resolver\IdentityInterface and returning the value of my_attribute from the getIdentities function. Then specify a @cache(cacheIdentity: Path\To\IdentityClass) directive for each GraphQL query to include the newly created IdentityClass to each query that adds the cache tags for each customer.
BCreate a new class inheriting from Magento\GraphQlCache\Model\CacheId\CacheIdFactorProviderInterface and returning the value of my_attribute from the getFactorValue function and my_attribute from getFactorName function. Then add this class through DI to the IdFactorProviders array of Magento\GraphQlCache\Model\CacheID\CacheIdCalculator.
CCreate a new class inheriting from Magento\Customer\CustomerData\SectionSourceInterface and returning the value of my_attribute from the getSectionData function. Then add this class through DI to the sectionSourceMap array of Magento\Customer\CustomerData\SectionPoolInterface.
An Architect needs to integrate an Adobe Commerce store with a new Shipping Carrier. Cart data is sent to the Shipping Carrier’s API to retrieve the price and display to the customer. After the feature is implemented on the store, the API hits its quota and returns the error “Too many requests”. The Shipping Carrier warns the store about sending too many requests with the same content to the API.
In the carrier model, what should the Architect change to fix the problem?
AImplement _setCacheQuotes()and _getCacheQuotes(), return the data if the request matches.
BIn _doShipmentRequest(), call canCollectRates() before sending request to the API.
COverride getResponse(), save the response to a variable, check if the response exists, then return.
An Adobe Commerce Architect designs a data flow that contains a new product type with its own custom pricing logic to meet a merchant requirement.
Which three developments are valid when reviewing the implementation? (Choose three.)
AContent of the etc/product_types.xml file
BHydrator for attributes belonging to the new product type
CCustom type model extended from the abstract Product Type model
DA new class with custom pricing logic, extending the abstract Product model class
EData patch to register the new product type
FNew price model extending \Magento\Catalog\Model\Product\Type\Price
Question 6
Adobe Commerce Master
0
Question 7
Adobe Commerce Master
Question 8
Adobe Commerce Master
Question 9
Adobe Commerce Master
Question 10
Adobe Commerce Master
Question 11
Adobe Commerce Master
Question 12
Adobe Commerce Master
Question 13
Adobe Commerce Master
Question 14
Adobe Commerce Master
Question 15
Adobe Commerce Master
Question 16
Adobe Commerce Master
Question 17
Adobe Commerce Master
Question 18
Adobe Commerce Master
Question 19
Adobe Commerce Master
Question 20
Adobe Commerce Master
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ad
Want a break from the ads?
Become a Supporter and enjoy a completely ad-free experience, plus unlock Learn Mode, Exam Mode, AstroTutor AI, and more.
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
Ask AstroTutor
0
An external system integrates functionality of a product catalog search using Adobe Commerce GraphQL API. The Architect creates a new attribute my_attribute in the admin panel with frontend type select.
Later, the Architect sees that ProductInterface already has the field my_attribute, but returns an Int value. The Architect wants this field to be a new type that contains both option id and label.
To meet this requirement, an Adobe Commerce Architect creates a new module and file etc/schema.graphqls that declares as follows:
After calling command setup:upgrade, the introspection of ProductInterface field my_attribute remains Int.
What prevented the value type of field my_attribute from changing?
AThe fields of ProductInterface are checked during processing schema.graphqls files. If they have a corresponding attribute, then the backend_type of product attribute is set for field type.
BThe interface ProductInterface is already declared in Magento_CatalogGraphQl module. Extending requires use of the keyword extend before a new declaration of ProductInterface.
CThe Magento_CatalogGraphQl module occurs later in sequence than the Magento_GraphQl module and merging output of dynamic attributes schema reader overrides types declared in schema.graphqls.
An Adobe Commerce Architect needs to log the result of a ServiceClass::getData method execution after all plugins have executed. The method is public, and there are a few plugins declared for this method. Among those plugins are after and around types, and all have sortOrder specified.
Which solution should be used to meet this requirement?
ADeclare a new plugin with the sortOrder value higher than the highest declared plugin sortOrder and implement afterGetData method.
BDeclare a new plugin with the sortOrder value lower than the lowest declared plugin sortOrder and implement aroundGetData method.
CDeclare a new plugin with the sortOrder value higher than the highest declared plugin sortOrder and implement aroundGetData method.
A company has an Adobe Commerce store. An attribute named “my_attribute” (type “text”) is created to save each product’s global ID that is shared between multiple systems.
Several months after going live, the values of “my_attribute” are all integer. This causes a problem for the other systems when those systems receive this data.
An Adobe Commerce Architect needs to recommend a solution to change the type of “my_attribute” from text to int.
Which two steps should the Architect take to achieve this? (Choose two.)
AMigrate data from table “catalog_product_entity_text” to “catalog_product_entity_int” for the attribute_id
BGo to Admin > Stores > Attributes > Product, edit “my_attribute” and update type from “text” to "int"
CWrite a plugin for \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend::afterLoad() and load data from “catalog_product_entity_int”
DCreate a Data Patch and update “my_attribute” type from “text” to “int”
ERun the command bin/magento indexer:reset catalog_product_attribute
A merchant is using a unified website that supports native Adobe Commerce B2B and B2C with a single store view.
The merchant wants to show the B2B account features like negotiable quotes and credit limits in the header of the site on every page for the logged-in users who are part of a B2B company account.
Each B2B company has its own individual shared catalog and customer group, and many customer groups for non B2B customers change. The merchant requests that this should not be tied to customer groups.
Which two solutions should the Architect recommend considering public data and caching? (Choose two.)
ACreate a plugin that switches the theme when a user is part of a B2B company so the output can be modified accordingly in the alternate theme.
BCheck if the current user is part of a B2B company within a block class and modify the output accordingly.
CCreate a new custom condition for customer segments that allow for choosing whether a user is part of a B2B company and then use this segment to modify the output accordingly.
DSet whether the current user is part of a B2B company in the customer session and use that data directly to modify the output accordingly.
ECreate a new HTTP Context variable to allow for separate public content to be cached for users in B2B companies where the output can be modified accordingly.
A representative of a small business needs an Adobe Commerce Architect to design a custom integration of a third-party payment solution. They want to reduce the list of controls identified in their Self-Assessment Questionnaire as much as possible to achieve PCI compliance for their existing Magento application.
Which approach meets the business needs?
AUtilize the payment provider iframe system to isolate content of the embedded frame from the parent web page.
BUtilize the Advanced Encryption Standard (AES-256) algorithm to encrypt all customer-sensitive data from the payment module.
CUtilize a trusted signed certificate issued by a Certification Authority (CA) to secure each connection made by the payment solution protocol via HTTPS.
An Architect is reviewing a custom module that is logging customer activity data on storefront using observers. The client reports that logs were recorded while the client was previewing storefront catalog pages from Admin Panel for a future scheduled campaign, using Adobe Commerce staging preview functionality.
What should the Architect check first to address this issue?
AThe plugin for the public method isAllowedObserver() from \Magento\Staging\Model\Event\Manager that alters the return value
BThe logging observers being copied from etc\events.xml to etc\adminhtml\events.xml with the attribute disabled="true"
CThe list of logging observers in bannedObservers parameter of \Magento\Staging\Model\Event\Manager type in di.xml
An existing Adobe Commerce website is moving to a headless implementation.
The existing website features an “All Brands” page, as well as individual pages for each brand. All brand-related pages are cached in Varnish using tags in the same manner as products and categories.
Two new GraphQL queries have been created to make this information available to the frontend for the new headless implementation:
During testing, the queries sometimes return out-of-date information.
How should this problem be solved while maintaining performance?
AEach GraphQL query’s resolver class should inject \Magento\GraphQlCache\Model\CacheableQuery and call setCacheValidity(true) on it as part of the resolver’s resolve function
BSpecify a @cache(cacheable: false) directive for each GraphQL query, making sure that the data returned is not cached, and is up to date
CSpecify a @cache(cacheIdentity: Path\To\IdentityClass) directive for each GraphQL query, corresponding to a class that adds cache tags for relevant brands and associated products
An Adobe Commerce Architect needs to create a new customer segment condition to enable admins to specify an ‘Average sales amount’ condition for certain segments.
The Architect develops the custom condition under Vendor\Module\Model\Segment\Condition\AverageSalesAmount with all of its requirements:
During testing, the following error appears:
Which two steps should the Architect complete to fix the problem? (Choose two.)
AUse a virtualType <virtualType name=”Magento\CustomerSegment\Model\Segment\Condition\AverageSalesAmount” type=”Vendor\Module\Model\Segment\Condition\AverageSalesAmount”/>
BRemove the trailing path Magento\CustomerSegment\Model\Segment\Condition\ from the $conditions value attribute
CUse a preference <preference for=”Magento\CustomerSegment\Model\Segment\Condition\AverageSalesAmount” type=”Vendor\Module\Model\Segment\Condition\AverageSalesAmount”/>
DSet the class in the $conditions value attribute to be Segment\Condition\AverageSalesAmount
ESet the class to be Magento\CustomerSegment\Model\Segment\Condition\AverageSalesAmount for the $conditions value attribute
While reviewing a newly developed pull request that refactors multiple custom payment methods, the Architect notices multiple classes that depend on \Magento\Framework\Encryption\EncryptorInterface to decrypt credentials for sensitive data.
The code that is commonly repeated is as follows:
In each module, the user_secret config is declared as follows:
The Architect needs to recommend an optimal solution to avoid redundant dependency and duplicate code among the methods.
Which solution should the Architect recommend?
AReplace all Vendor\PaymentModule\Gateway\Config classes with virtualType of Magento\Payment\Gateway\Config\Config and set <user_secret backend_model=“Magento\Config\Model\Config\Backend\Encrypted” /> under config.xml
BAdd a plugin after the getValue method of $scopeConfig, remove the $encryptor from dependency and use it in the plugin to decrypt the value if the config name is ‘user_secret’
CCreate a common config service class Vendor\Payment\Gateway\Config\Config under Vendor_Payment and use it as a parent class for all of the Vendor\PaymentModule\Gateway\Config\Config classes and remove $scopeConfig and $encryptor dependencies
Due to a marketing campaign, a website is experiencing a very large number of simultaneously placed orders, which is affecting checkout performance. The website is in the production deploy mode.
Which two website settings can an Architect optimize to decrease the impact on checkout performance? (Choose two.)
AAsynchronous indexing admin panel setting (Stores > Settings > Configuration > Advanced > Developer > Grid Settings > Asynchronous indexing) can be enabled by executing the following CLI command: bin/magento config:set dev/grid/async_indexing 1
BMultithreaded checkout processing admin panel setting (Stores > Settings > Configuration > Sales > Checkout > General Settings > Asynchronous) can be set to a higher value representing the number of PHP threads used
CAsynchronous email notifications admin panel setting (Stores > Settings > Configuration > Sales > Sales Emails > General Settings > Asynchronous) can be enabled
DA new database can be created and the Split Database feature can be automatically configured with the following command: bin/magento setup :db-schema:split-sales --host="<checkout db host or ip>" --dbname="<name>" --username="<checkout db username>" --password=" <password>"
EThe website deploy mode can be set to siege by executing the following CLI command: bin/magento deploy:mode:set siege, provided that it will be changed back to production as soon as the number of simultaneously placed orders decreases to acceptable levels
An Adobe Commerce Architect is setting up a Development environment for an on-premises project that will be used for developers to specifically test functionality, not performance, before being passed to the Testing team.
The Magento application must run with the following requirements:
Errors should be logged and hidden from the user
Cache mode can only be changed from Command Line
Static files should be created dynamically and then cached
Which Application Mode is required to achieve this?
ADefault Mode
BProduction Mode
CDeveloper Mode
An Adobe Commerce Architect needs to ensure zero downtime during the deployment process of Adobe Commerce on-premises.
Which two steps should the Architect follow? (Choose two.)
ARun bin/magento setup:upgrade --keep-generated to upgrade database
BRun bin/magento setup:upgrade --dry-run=true to upgrade database
CRun bin/magento setup:upgrade --convert-old-scripts=true to upgrade database
DEnable config flag under developer/zero_down_time/enabled
EEnable config flag under deployment/blue_green/enabled
An Architect needs to review a custom product feed export module that a developer created for a merchant. During final testing before the solution is deployed, the product feed output is verified as correct. All unit and integration tests for code pass.
However, once the solution is deployed to production, the product price values in the feed are incorrect for several products. The products with incorrect data are all currently part of a content staging campaign where their prices have been reduced.
What did the developer do incorrectly that caused the feed output to be incorrect for products in the content staging campaign?
AThe developer forgot to use the getContentStagingValue() method to retrieve the active campaign value of the product data.
BThe developer retrieved product data directly from the database using the entity_id column rather than a collection or repository.
CThe developer did not check for an active content staging campaign and emulates the campaign state when retrieving product data.
An Adobe Commerce Architect is asked by a merchant using B2B features to help with a configuration issue.
The Architect creates a test Company Account and wants to create Approval Rules for orders. The Approval Rules tab does not appear in the Company section in the Customer Account Menu when the Architect logs in using the Company Administrator account.
Which two steps must be taken to fix this issue? (Choose two.)
ASet ‘Enable Purchase Orders’ in the B2B Admin to TRUE
BMerchant needs to log out of frontend and then log back in to load new permissions
CSet ‘Enable Purchase Orders’ on the Company Record to TRUE
DMake sure that the ‘Purchase Order’ payment method is active
ESet ‘Enable B2B Quote’ in the B2B Admin to TRUE
An Adobe Commerce Architect gets a request to change existing payment gateway functionality by allowing voided transactions only for a certain range of paid amounts.
In the vendor module file etc/config.xml, payment method has an option can_void set to 1.
How should this customization be done?
AExtend Magento\Payment\Model\Method\Adapter and reimplement method void. Use this new class as a new type of payment method facade configuration overriding virtualType type for adapter.
BDeclare a new plugin for class Magento\Payment\Gateway\Config\ConfigValueHandler and using the afterHandle method, change the result for subject can_void.
CAdd new handler with name can_void to virtualType based on type Magento\Payment\Gateway\Config\ValueHandlerPool in payment method facade configuration.