You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
3.1 Demonstrate understanding of the architectural layers of the database access classes, including models, repositories, and data mappers
Models, resource models, and collections in Magento, their impact on performance. Repositories, SearchCriteria, WebAPI, WebAPI access, extension attributes
How to create an entity that supports extension attributes
How to implement SearchCriteria processing in the repository::getList method
How to perform bulk save operations in Magento
How to extend the Magento data object (Data API class) with an attribute that has values in a remote system
How to extend exisitng WebAPI calls with a new parameter
How to create a dynamic WebAPI ACL
The difference between extension attributes and custom attributes
3.2 Demonstrate understanding of the staging workflow
Staging modification to the Magento database operations (row_id, entity managers)
How does data versioning work?
Different possibilities of data versioning (row/table/database level) and how this is implemented in Magento
The role of the entity manager
High level staging implementation overview
3.3 Demonstrate an ability to use different types of setup scripts in Magento
Schema and data setup scripts, uninstall scripts, recurring scripts, uninstall schema vs. uninstall data
What happens when an uninstall script is executed: data version change, deleted tables, etc.
Recurring scripts and their order in the setup:upgrade process
Accessing areas and system configuration values in setup scripts
4.1 Describe the EAV data access process in Magento
Getting an attribute instance, impact of attribute sets, large number of attributes and attribute sets
What is the impact of 10,000 attribute sets? 1,000 attributes in a set?
How to get information about an attribute
How to perform attribute operations programmatically: assign it to a set/group, update properties, etc.
4.2 Describe the database tables for EAV entities and how to create them
The EAV database structure, performance considerations, entity-level attribute properties (catalog_eav_attribute)
Where are catalog-specific attribute properties stored and what are they used for?
How does Magento store the attribute to attribute group association?
What backend types are available? How do you add a new backend type?
Specifics around static attributes
4.3 Demonstrate an ability to operate with attribute options
Different ways to store attribute options. Using eav_attribute_option_ tables*
Config base, database base options
The eav_attribute_option_ table: tables that contain shared options between different entities, pros and cons of using the table
4.4 Demonstrate an ability to use non-catalog EAV entities
Adding an attribute to Customer, Customer Address and Sales entities. Making an attribute visible in the Admin or the storefront. Pitfalls in attributes operations in non-catalog EAV attributes
Adding an attribute to customers, saving and loading the attribute, problems related to the save process. What is the role of attribute sets and groups for customer attributes?
Adding an attribute to customer addresses, the role of the ""is_system"" property and why it only works for the Customer Address entity
How to make a customer or customer address attribute visible in the My Account, Checkout, and Admin pages
What is the purpose of the SalesSetup class and why do you use the addAttribute method for sales entities?
6.1 Demonstrate an ability to understand and customize Magento products
Selecting the right product type for a given requirement (configurable with custom options, bundle with grouped). Deciding to use non-standard products: for example, for licenses, subscriptions, courseware, or glasses. Product relations (related, upsells).
Select a product type for a subscription/subscription bundled with a physical product
Select a product type for courseware
Select a product type for glasses with a prescription
Compare custom options with configurable products
Configurable product with custom options for the associated simple products
Bundled product with custom options for its associated simple products
What is the related products database structure? Understand the performance impact of having many related products
Compare related with upsells
Programmatically access related products, custom options, configurable parameters
Dynamic related products
6.2 Demonstrate an ability to perform complex operations with the Magento pricing framework
Understand the pricing calculation and rendering framework. Which classes are involved in rendering/calculation? What is the role of indexing? How do different price modifiers work together?
How is a price calculated on the product detail page, the product listing page? Price calculation classes. Relation to the price indexer
The Magento\Framework\Price* component and its extension in the Catalog module
How to render a product price: which class to use, which data needs to be provided
How to change the price rendering process for a given product type/product instance
How to add a custom price adjustment to modify the calculation process. What happens if the price index is not aligned with this change?
6.3 Customize catalog price rules
Programmatically create a catalog price rule, the impact of catalog price rules on performance, extending catalog price rule conditions with custom entities
6.4 Determine how to use Magento categories
Advanced category features: hierarchy, custom attributes, impact on performance
What happens if a project has many categories?
Dynamic rules for the order of products in category
The category is_anchor attribute and its effect on performance
6.5 Demonstrate an understanding of catalog indexers
The indexing framework, the price indexer, the inventory indexer, the EAV indexer. How does Magento use indexed data?
Estimate indexing customization efforts when making architectural decisions. Estimate indexing process complexity and time for different given conditions. The impact of indexing for frequent catalog updates.
What steps does Magento perform when indexing? What is the role of the indexer_state table
How to register a new indexer
How does the price indexer work? Which events trigger it? How do different product types declare their indexers? How important is an order of indexers in price indexing?
Inventory indexer overview, inventory indexing for different product types
What is the scope of a price in the price index? How difficult is it to extend the scope of an index?
Impact of many stores/websites on price indexing
Custom price modifiers: Pros and cons of customizing the index versus adjusting the native features like price rules or custom options
6.6 Demonstrate understanding of catalog staging and its impact on the system
Flow modifications introduced by staging (triggers, row_id, data versions). Staging-related modifications of the indexing process
Issues related to different row_id and entity_id
Catalog triggers
6.7 Demonstrate an understanding of the product search framework
How to customize Elastic search
6.8 Demonstrate understanding of importing products and categories in Magento
Frequent imports, massive imports, import with many attributes
Issues related to a frequent import, for example every minute
Compare importing products using the native import, save by model, or custom SQL
Specifics of importing a catalog with many attributes and attribute sets
7.1 Understand the Magento quote architecture and customizing quote-related functionality
Quote-related objects, total models and the price calculation process, the add to cart process, custom add to cart operations, customizations of the price calculation, taxes and discount, various display settings
The quote merge functionality
Programmatically add a free gift when a certain condition is met
Programmatically set a price for a product
Taxes with discounts calculation
The impact of many shopping cart price rules on performance
Programmatically create shopping cart price rules
Importing coupon codes
Extend the shopping cart price rules with custom entities
Programmatically separate line items in the shopping cart so there are two line items instead of one with qty=2
Adding a new total model and evaluating its impact on taxes and discounts
Shipping discounts behavior and customizations
WebAPI for quote operations. Create a quote, add an item, create a coupon, add a discount
7.2 Demonstrate an ability to customize and extend the checkout process
Checkout steps, the REST API, customizations of the checkout API, the order placement process. The impact of many concurrent order placements
Adding a step to the checkout after the payment step, or between the payment and shipping steps
Implementing a ""one-click"" checkout, evaluate possible pitfalls such as discounts being applied or canceled when the order is placed
The checkout REST API: Modifying the native flow (separate calls to save payment and to place the order)
Extending the checkout REST API. Adding new parameters to different API endpoints. Using extension attributes
Issues related to simultaneous order placement, inventory locking
Determining the exact moment when the stock is decremented during an order placement
Customizing the order placement such that it uses message queues
Horizontal sharding of orders tables to improve order placement capacity. What challenges need to be resolved?
7.3 Create and debug shipping and payment methods in Magento
Different types of payment methods: gateway, offline, hosted. The gateway payment methods framework. The payment method availability logic. The shipping rates calculation process, debugging shipping rates and table rates customizations
The gateway framework vs. AbstractMethod
The structure of offline payment methods. What makes them "offline"?
Partial invoices/refunds for payment methods
Add a hosted-type payment method (redirects, custom order review page)
Add a new shipping method. Customize the logic for getting a list of available shipping methods
The shipping rate calculation flow. Debug shipping rates, identify plugins that that influence the shipping rate calculation process
Customizing table rates. Add a new "column" to the "table", change the logic of selecting the rate.
Gateway shipping methods. Remote call flow. How to avoid the remote call if it is unnecessary