Yireo - Developer training

Open main menu

Magento 2 Advanced Development

Everything you need to create advanced modules following best practices

Everything you need to create advanced modules following best practices

Magento 2 has arrived. This training is the second part of our Magento 2 developer training that gives developers a kickstart to start developing in Magento 2. Part one focussed on Dependency Injection and composer. This training focuses on practicing DI, building a backend module and advanced topics like unit testing.

Jisse Reitsma

Your teacher will be Jisse Reitsma

This training will be held with Jisse Reitsma as your guide. Jisse is the founder of Yireo, three times Magento Master, member of ExtDN, trainer and author. Jisse has been in the Magento ecosystem since the beginning (v0.99) and has created numerous Magento extensions. He also has been pushing better coding practices, like CI/CD, clean coding, coding standards and testing.

Pick the learning method that fits you best

Because everyone has different needs


On Demand

  • Full access to this course with 122 lessons with 0+ hours of video
  • Student notes (414+ pages)
  • Learn at your own pace
per year per individual


  • On-Demand package of this course
  • Teacher support via email & slack
  • Prioritized requests for new lessons
  • Get the personalized help that you need
per year per individual


  • On-Demand package of this course
  • Economical for groups of 5 and more
  • Freely debate company-specific topics
  • Online or on-site at your company

Custom pricing

per training day

There are no scheduled live trainings available

At this moment, there are no trainings scheduled in our agenda. However, we are always busy with planning more, so make sure to check out our online agenda. Alternatively, checkout our on-demand content or feel free to contact us for a custom in-company training.

Current video lessons in one single view

We are constantly updating our courseware, but the following is a real-life snapshot

Event observer   n/a
Finding events   n/a
Dispatching events   n/a
Observer or Plugins   n/a
Routing overview   n/a
Backend routes   n/a
Logic of the FrontController class   n/a
Routing   n/a
How 404 pages work   n/a
securitytxt   n/a
Adding a custom router   n/a
CMS Blocks   n/a
CMS pages   n/a
PageBuilder   n/a
CSP   n/a
Dealing with CMS blocks   n/a
Dealing with CMS pages   n/a
Adding a custom page type   n/a
How to add a new template to an existing widget   n/a
Widgets   n/a
Objects   n/a
Design patterns   n/a
Overview   n/a
Data objects   n/a
Builder pattern   n/a
No more Helpers   n/a
Models vs DTOs   n/a
Declarative schemas   n/a
Extending existing schemas   n/a
Data models   n/a
Resource models   n/a
AbstractModel or AbstractExtensibleModel?   n/a
Collections   n/a
Repositories   n/a
The bad side of repositories   n/a
Creating your own repository   n/a
Overview of EAV in the database   n/a
EAV attributes   n/a
Creating an EAV entity   n/a
About attributes   n/a
Making sense of EAV tables   n/a
Example of attribute models: ISBN   n/a
Attribute models   n/a
Attribute options   n/a
Catalog attributes   n/a
Defining a custom product type   n/a
Customer attributes   n/a
Working with the configuration   n/a
Attribute sets   n/a
Category attributes   n/a
Product Imports   n/a
Advanced collection magic   n/a
Manual SQL queries   n/a
Using manual queries to clean up the database   n/a
Using manual queries with EAV   n/a
Entity Manager   n/a
Future changes in database layer   n/a
Database profiling   n/a
Caching frontend and backends   n/a
Caching backends   n/a
Caching frontends   n/a
Caching types   n/a
Cache invalidation   n/a
Using IdentifyInterface   n/a
Adding a custom cache type   n/a
core-cache-config   n/a
observer   n/a
Parallel generation with Redis   n/a
Set the page cache to filesystem   n/a
Extension Attributes   n/a
Example with customer extension attribute   n/a
Example product extension attribute   n/a
Backend routes   n/a
Adding Store Configuration settings   n/a
ACL rules   n/a
Adding a menu item   n/a
Basics of adding UiComponents   n/a
Extending a UiComponent grid   n/a
Creating a UIComponent grid   n/a
Creating a UIComponent form   n/a
Working with data sources for UIComponents   n/a
Using the uiComponent data persistor   n/a
Extending the dashboard   n/a
Hyva admin   n/a
uicomponent-with-react   n/a
Custom backend theme   n/a
Web APIs   n/a
Extension Attributes in the REST API   n/a
Create a new REST endpoint   n/a
Overview of quotes and the cart   n/a
Quote fields in the database   n/a
From quote to order   n/a
Adding custom discount   n/a
ConfigProviders for window.checkoutConfig   10m 56s
Adding a new Layout Processor   15m 52s
Layout processorsfree23m 12s
Payment methods   n/a
Exploring pricing rules   n/a
Shipping methods   n/a
The Vault   n/a
Using Blackfire for profiling   n/a
Accessing the filesystem   n/a
framework   n/a
Importing CSV files   n/a
Importing products   n/a
Releasing modules to the public   n/a
Customizing TinyMCE   n/a
Query classes (CQRS)   n/a
Command classes (CQRS)   n/a
Overview of testing   n/a
Unit Tests   n/a
GitHub Actions   n/a
Setting up integration tests   n/a
Integration testing   n/a
Testing events and observers   n/a
Magento Functional Testing Framework (MFTF)   n/a
Overview of Live Tests   n/a
Setup of live tests   n/a
Using the ProductRepository in a live test   n/a
An overview of End-to-End testing   n/a
Cypress   n/a
Security overview   n/a

These videos are available as an On-Demand video training (with notes). See the pricing for details.

Get ready for certification with our Yireo course

This training prepares you for undertaking the following Adobe certifications:

  • Adobe Certified Professional - Adobe Commerce Developer (AD0-E711)
  • Adobe Certified Expert - Adobe Commerce Developer Expert (AD0-E709)
  • Adobe Certified Master - Adobe Commerce Architect Master (AD0-E704)
  • Adobe Certified Expert - Adobe Commerce Cloud Developer (AD0-E706)

Note that more courses might be needed besides this training. For an overview, see our certification page

These are the options we give you:

Prepare for certification

Our Magento 2 (so Adobe Commerce) trainings are not part of the official Adobe ALS program. However, Yireo is known for providing training with high quality. Many Magento developers have reached official certification, thanks to Yireo. Additionally, we can supply our own Yireo Training Certificates.

At your place or ours?

Everyone learns at her/his own pace. We provide both in-house training and public training throughout Europe - whatever suits your team best. When 3 or more developers are attending, a custom training is often more economical. Contact us for more details.

You'll get courseware

Every workshop is accompanied with official Yireo coursematerial. Attendees are sent a digital version of this material after the training. It contains slides, comments and references. Additionally, our GitHub repos contain numerous more code samples.

Online classrooms

Online trainings are also our training: Via Zoom or Google Hangout sessions, our teacher is able to connect with your team. The benefit here is that the team is able to connect from various places itself as well, timeframes are more flexible. Afterwards, a video recording will be shared with all attendees for reference.

On-demand self-paced training

This training is also available as an On-Demand training: Via numerous video lessons, including accompanying student notes (equalling a book on their own), you'll learn about the topics in your own pace. And when you bump into questions, you can fall back to the teachers guidance.

This training is part of the following series

so that we'll be able to guide you all the way, step by step

Why Yireo?

  • Professional trainings at affordable prices
  • Highly involved in the Magento community
  • Passionate, enthousiastic, knowledgable

We have trained 1400+ Magento developers since 2009

Training topics

  • Event observer
  • Finding events
  • Dispatching events
  • Observer or Plugins
  • Routing overview
  • Backend routes
  • Logic of the FrontController class
  • Routing
  • How 404 pages work
  • securitytxt
  • Adding a custom router
  • CMS Blocks
  • CMS pages
  • PageBuilder
  • CSP
  • Dealing with CMS blocks
  • Dealing with CMS pages
  • Adding a custom page type
  • How to add a new template to an existing widget
  • Widgets
  • Objects
  • Design patterns
  • Overview
  • Data objects
  • Builder pattern
  • No more Helpers
  • Models vs DTOs
  • Declarative schemas
  • Extending existing schemas
  • Data models
  • Resource models
  • AbstractModel or AbstractExtensibleModel?
  • Collections
  • Repositories
  • The bad side of repositories
  • Creating your own repository
  • Overview of EAV in the database
  • EAV attributes
  • Creating an EAV entity
  • About attributes
  • Making sense of EAV tables
  • Example of attribute models: ISBN
  • Attribute models
  • Attribute options
  • Catalog attributes
  • Defining a custom product type
  • Customer attributes
  • Working with the configuration
  • Attribute sets
  • Category attributes
  • Product Imports
  • Advanced collection magic
  • Manual SQL queries
  • Using manual queries to clean up the database
  • Using manual queries with EAV
  • Entity Manager
  • Future changes in database layer
  • Database profiling
  • Caching frontend and backends
  • Caching backends
  • Caching frontends
  • Caching types
  • Cache invalidation
  • Using IdentifyInterface
  • Adding a custom cache type
  • core-cache-config
  • observer
  • Parallel generation with Redis
  • Set the page cache to filesystem
  • Extension Attributes
  • Example with customer extension attribute
  • Example product extension attribute
  • Backend routes
  • Adding Store Configuration settings
  • ACL rules
  • Adding a menu item
  • Basics of adding UiComponents
  • Extending a UiComponent grid
  • Creating a UIComponent grid
  • Creating a UIComponent form
  • Working with data sources for UIComponents
  • Using the uiComponent data persistor
  • Extending the dashboard
  • Hyva admin
  • uicomponent-with-react
  • Custom backend theme
  • Web APIs
  • Extension Attributes in the REST API
  • Create a new REST endpoint
  • Overview of quotes and the cart
  • Quote fields in the database
  • From quote to order
  • Adding custom discount
  • ConfigProviders for window.checkoutConfig
  • Adding a new Layout Processor
  • Layout processors
  • Payment methods
  • Exploring pricing rules
  • Shipping methods
  • The Vault
  • Using Blackfire for profiling
  • Accessing the filesystem
  • framework
  • Importing CSV files
  • Importing products
  • Releasing modules to the public
  • Customizing TinyMCE
  • Query classes (CQRS)
  • Command classes (CQRS)
  • Overview of testing
  • Unit Tests
  • GitHub Actions
  • Setting up integration tests
  • Integration testing
  • Testing events and observers
  • Magento Functional Testing Framework (MFTF)
  • Overview of Live Tests
  • Setup of live tests
  • Using the ProductRepository in a live test
  • An overview of End-to-End testing
  • Cypress
  • Security overview




Knowledge of Magento 1 or 2 XML layout
Knowledge of Magento 2 Dependency Injection and composer
(Part 1 of this training is recommended)
Experience with PHP OOP

Frequently Asked Questions

There is a minimum number of attendees listed. What does this mean?

The training is only held when there is a number of attendees. This number is usually 4 but sometimes we bring this down to 2 or 3. This minimum number simply means that if a class is not "full", either you get a refund or your ticket is transferred to another date.

Jisse Reitsma

The teacher: Jisse Reitsma

Thus it came to be

When Jisse started with Magento, he already had years of experience programming in Joomla (back in the days when Joomla was actually the #1 CMS - believe it or not). Back then, open source cart solutions were lacking and Magento 1.0 brought a lot of hope.

Quickly Jisse dived into the new architecture: In 2009, he built his first extensions, among which the fundaments of a bridge between Joomla and Magento (MageBridge) and various project-specific extensions (among which payment providers and custom MVC/EAV modules).

A relieve

Over the years, he experienced what most Magento developers experienced with M1: A lot of power, but also frustration. After a couple of years, it no longer was cutting-edge and it barely adopted new developer standards. When the new Magento 2.0 alpha 1 came out, Jisse started playing with it. And he was relieved to see modern tools in its architecture: Composer, PHP namespacing, testability, CLI-driven management, proper design patterns.

Again, after building some modules and dummy projects, the first Magento 2 developer training was given in January 2017 (two months after the official release) and numerous M2 trainings have followed for both backend developers, frontend developers and devops.

Frontend sagas

Currently, with Magento 2 being several years old now, the fuzz is no longer about its backend architecture: It is the frontend that matters. Jisse has given numerous frontend development trainings, where people complain about LESS (and not SASS) being used, loading times to be slow (while in fact M2 allows for enough tuning to make it bloody fast), an archaic combo of Knockout/RequireJS (while they both serve their purpose in regards to backwards compatibility).

PWA is the new keyword. Jisse has dived into React, Redux & service workers in combination with GraphQL and NodeJS tools. He is currently working in various initiatives to help developers embrace the new frontend stack (ExtDN, Vue Storefront, DEITY). Also, he has added Docker and Kubernetes to his vocabulary.

As of yet, it is fair to say that Magento holds little surprises for Jisse. He is your guy to train you or your developers properly in both backend and frontend technology.



GitHub organizations

Legal information

Other Yireo sites

Get Social

About Yireo