Adobe AD0-E722 Exam
Adobe Commerce Architect Master (Page 5 )

Updated On: 1-Feb-2026

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. Following best practices, how should the Architect add the taxes for all orders?

  1. Add a new observer to the event sales.quote.collecLtotals.before'' and add the custom tax to the quote
  2. Write a before plugin to \Magento\Quote\Model\QuoteManagement::placeOrder() and add the custom tax to the quote
  3. Declare a new total collector in "etc/sales.xmr in a custom module

Answer(s): C

Explanation:

According to the Adobe Commerce documentation, the best way to add a custom tax calculation to all orders is to declare a new total collector in the "etc/sales.xml" file of a custom module. This way, the custom tax logic can be implemented in a separate class that extends the \Magento\Quote\Model\Quote\Address\Total\AbstractTotal class and overrides the collect() and fetch() methods. The collect() method is responsible for calculating the tax amount and adding it to the quote address, while the fetch() method is responsible for displaying the tax amount in the cart and checkout pages. The new total collector can be assigned to any area of the order totals, such as before or after the subtotal, shipping, or grand total.


Reference:

Customizing order totals
How to add custom fee or discount to order totals in Magento 2



An Adobe Commerce Architect runs the PHP Mess Detector from the command-line interface using the coding standard provided with Adobe Commerce. The following output appears:



The Architect looks at the class and notices that the constructor has 15 parameters. Five of these parameters are scalars configuring the behavior of MyService. The class also contains three constants referencing one other class.
How should the Architect fix the code so that it complies with the coding standard rule?

  1. Modify the code of MyService so that the number of different classes and interfaces referenced anywhere inside the class is fewer than 13.
  2. Consolidate the constants referencing other classes into a string representation.
  3. Introduce a new class accepting those five scalars and use it in the constructor and the remaining logic of MyService.

Answer(s): C

Explanation:

The issue is being caused by the high coupling between objects (CBO) value of the class MyService. CBO is a metric that measures the number of classes that are coupled to a given class, either by method calls, property or parameter references, inheritance, or constants1. A high CBO value indicates that the class is too tightly coupled with other classes, which makes it more difficult to maintain, test, and reuse2. To reduce the CBO value, the Architect should introduce a new class that encapsulates the five scalar parameters that configure the behavior of MyService. This way, the constructor of MyService will only have one parameter of the new class type, instead of five scalar parameters. This will also make the code more readable and maintainable, as the new class can provide methods to access and manipulate the configuration data. The constants referencing other classes should not be consolidated into a string representation, as this would not reduce the CBO value and would make the code less clear and type-safe3. The number of different classes and interfaces referenced anywhere inside the class is not relevant for the CBO metric, as it only counts the classes that are coupled to the given class1.


Reference:

CBO coupling between object, Coupling Between Object classes (CBO), Cohesion and coupling of an object in OO programming



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.)

  1. Asynchronous 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
  2. Asynchronous email notifications admin panel setting (stores > settings > configuration > sales > sales Emails > General settings > Asynchronous) can be enabled
  3. A new database can be created and the Split Database feature can be automatically configured with the following command: bin/Magento setup:db-schema:spiit-sales ­host"<checkout db host or ip>- --dbnanie""<name>" --username"<checkout db username)" --password""<password>"
  4. The 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
  5. Multithreaded 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 exclusively for checkout

Answer(s): A,C

Explanation:

Option A is correct because enabling asynchronous indexing can improve the checkout performance by reducing the database load and avoiding locking issues. Asynchronous indexing allows the indexers to run in the background without affecting the frontend operations. The command bin/magento config:set dev/grid/async_indexing 1 can be used to enable this option in the production mode1.
Option C is correct because creating a new database and splitting the sales tables can also improve the checkout performance by distributing the database load and avoiding contention. Splitting the database allows the checkout and order management operations to use a separate master database from the rest of the Magento application tables. The command bin/magento setup:db-schema:split- sales --host="<checkout db host or ip>" --dbname="<name>" --username="<checkout db username>" --password="<password>" can be used to configure this feature2. Option B is incorrect because enabling asynchronous email notifications does not affect the checkout performance directly. Asynchronous email notifications allow the order confirmation emails to be sent in batches by a cron job instead of immediately after placing an order. This option can reduce the server load and improve the customer experience, but it does not impact the checkout process itself3.
Option D is incorrect because there is no such deploy mode as siege in Magento 2. The available deploy modes are default, developer, and production. Changing the deploy mode can affect the performance, caching, and error handling of the Magento application, but it does not directly affect the checkout performance4.
Option E is incorrect because there is no such admin panel setting as multithreaded checkout processing in Magento 2. The number of PHP threads used for checkout is determined by the web server configuration and the PHP-FPM settings, not by the Magento application settings. Increasing the number of PHP threads may improve the checkout performance, but it also requires more server resources and may cause other issues5.


Reference:

1: Asynchronous indexing | Adobe Commerce Developer Guide
2: Split database performance solution | Adobe Commerce Developer Guide
3: Sales Emails | Adobe Commerce User Guide
4: Set up Magento modes | Adobe Commerce Developer Guide
5: PHP-FPM configuration settings | Adobe Commerce Developer Guide



An Adobe Commerce Architect is reviewing API-functional test code. Some tests send errors to indicate that the customer address does not exist. The test codes show the following:



Which step should the Architect take to fix the test errors?

  1. Change the annotation to Use@magentoApiDataFixture Magento/Customer/_files/ instead Or dmagentoDataFixture Magento/Customer/_files/customer_one_address.php
  2. Set the annotation to USe AmagentoPersistDataFixture Magento/Cu5tomer/_f iles/custcwer_one_address.php instead Of @magentoDataFixture Magento/Customer/_f iles/customer_one_address.php
  3. Update the annotation to Specify addreSSjd £niagentoDataFixture Magento/Customer/_files/customer_one_address.php with:{Maddress_id":"$address.id$"}

Answer(s): B

Explanation:

The issue is being caused by the use of @magentoDataFixture annotation, which creates a temporary data fixture that is rolled back after each test execution1. This means that the customer address created by the fixture is not persisted in the database and cannot be retrieved by subsequent tests. To fix this, the Architect should use @magentoPersistDataFixture annotation, which creates a permanent data fixture that is not rolled back after each test execution2. This way, the customer address created by the fixture will be persisted in the database and can be accessed by subsequent tests. Changing the annotation to use @magentoApiDataFixture or specifying address_id in the annotation will not solve the issue, as they are not related to the persistence of the data fixture3.


Reference:

Data fixtures, Persistent data fixtures, API-functional tests



A custom cron job has been added to an Adobe Commerce system to collect data for several reports.
Its crontab. xml configuration is as follows:



The job is data intensive and runs for between 20 and 30 minutes each night. Within a few days of deployment, it is noticed that the sites sitemap. xml file has not been updated since the new job was added.
What should be done to fix this issue?

  1. Change the schedule of the siten.aP_generate cron job to 30 0 * * *so that it runs after the gather_reporting_data job has completed.
  2. Create a new cron group for the reporting job, specifying <use_separate_process>i</use_separate_process>
  3. Break the data gathering job into a number of smaller jobs, so that each individual job runs for a maximum of 5 minutes

Answer(s): B

Explanation:

The issue here is that the gather_reporting_data job is running for a long time and blocking the sitemap_generate job from running. The solution is to create a new cron group for the reporting job and specify <use_separate_process>i</use_separate_process> so that the reporting job runs in a separate process and does not block the sitemap_generate job.


Reference:

https://experienceleague.adobe.com/docs/commerce-cloud-service/user- guide/architecture/starter-architecture.html?lang=en#cron-groups-and-processes



Viewing page 5 of 11
Viewing questions 21 - 25 out of 50 questions



Post your Comments and Discuss Adobe AD0-E722 exam prep with other Community members:

Join the AD0-E722 Discussion