Last week I attempted to teach the MB-820 course as is, and it was close to be a crash-and-burn experience.
Why? There are many reasons.
Wrong target group:
- The target group for the exam and the course is describes as this:
- “Candidates for this course are Developers, Software engineers, Architects, Technical advisors, Technical consultants, User Experience leads or have a combination of these skills”.
- Which means that the certification and the course contains parts of all this.
- In real life, this is not one person or function. Very few consultants or developers will cover all these areas, and I mean, I have been teaching development for 15 years now, and there is stuff that I had to work hard to understand and make work, also because of the quality of the demos and exercises (more about that later)
It ended up with a group where everyone was dissatisfied at some point.
- The experienced developers thought that much of the material was too basic.
- The unexperienced did not learn the basic stuff and the complicated stuff flew over their heads.
Missing access to the sites demanded for the course:
-
Creating a new free trial: This is not possible if the partner you work for already have a sandbox environment, therefore you need to have a work email that isn’t connected to office 365. Most people do not have one.
-
Administer BC Online: If you are a brand-new employee at a partner, the chances for her/him to be appointed Dynamics 365 Admin is equal to 0.
-
Managing users to BC demands access to Entra ID center which means that you need to be either Azure User Admin or Global Admin and that is not going to happen.
-
Use Azure functions – see above
-
Work with App registrations and web services – see above
The quality of the course material demos and exercises were not accurate or up to date:
-
Azure Functions can no longer be created from the Azure Portal but only through Visual Studio Code. Besides that, there are steps missing.
-
Power Automate has changed totally since the materials were made, and the functionality in the out-of-the-box flows did not work. The exercise did not work either.
- Access REST Services the demonstrations are flawed and do not work as described
-
Identify functional table types and characteristics: There are NO exercises in creating tables – and it is positioned after working with other objects – this does not make any sense.
The flow of the course:
The order of the modules is pretty random. There is no natural flow which would make it easier for the delegated to follow. Besides that, topics are introduced in one module and then it will come back in another module. Some modules introduce topics early, but is explained later. Some topics are repeated in multiple modules.
- Starting with “Start your free BC trial” 90% of the delegated could not create a new trial or use a company sandbox since the partners only have 3 per production environment – I had anticipated that and offered my own training machines. But why include it when we know it doesn’t work
- Introduction to the capabilities of BC: This is part of the MB-800 course and has absolutely no place here. It should be part of the prerequisites.
- Customize BC: the same, it is part of the MB-800 course and has absolutely no place here.
- Prepare for an easy application upgrade experience in BC: This is good but it should be positioned at the end of the course when the delegated actually know what an app is and how it works. AND what the %¤# does DataTransfer do in this section.
- Administer BC online: Firstly, none of the delegates I have are companies starting up as new partners. Secondly, it would be better to introduce the topic later instead of spending 2½ hours on the first day. Also testing is introduced here, they might want to know that to test. And honestly 6 minutes to explain the API for automation and administration!
This means that the first day is spent talking about stuff that we will get back to later or stuff that was irrelevant.
-
Manage users and implement security in BC: This is part of the MB-800 course
-
Introduction to the development environment for BC: This would normally be my first topic in a development course – but here we are at day 2.
-
Debug and deploy your extension in BC: Great topic, but it would be better is we had a solution already to debug. So, later in the course. And, why are we making table and page extensions here before going through the object types.
-
Work with pages in BC: The flow totally breaks here. We do not know what a table is, but we are expected to create a page. Other that that, the module is ok.
-
Design the data model of a report in BC: This is ok, but 37 minutes to explain and do exercise, that is not enough. And what is a query doing here?
-
Work with codeunits in BC: 15 minutes to explain codeunits? And then the test, test runner, install and upgrade codeunits are explained in other modules.
-
Work with XMLports in BC: This is ok.
-
Work with entitlements and permission sets in BC: This is another weird placement. The topic is ok but should be moved to the end.
-
Work with queries in BC: This is ok, but let’s move the query part from the report module here. Now they know both what a report and a query is.
-
Build control add-in objects in BC: This is a topic that the average developer maybe come across once in their career (unless you are Vjekoslav ). It this cardinal and should it be here or together with the Azure functions module? And 37 minutes to both demo and exercise – not going to happen.
-
Customize the UI experience in BC: Weird placement, maybe with the pages or the permission sets.
-
Identify functional table types and characteristics in BC: So, now the tables came, but without any exercises. Not good enough.
-
Introduction to the basics of AL programming in BC: And now we learn about programming after we have made objects, added code, tested and debugged??? And we have to go through it all in 74 minutes.
-
Learn about application performance and monitoring in BC: We have been at the Application Insights before. Keep the topics together. Also, 19 minutes to teach high performance programming. Not going to happen.
-
Work with source control using Git in Visual Studio Code: Also way too late. If introduced earlier, the solution that they have made could have been committed to an off-site repo. That would give them the experience of the normal development procedures.
-
Use Application Lifecycle Management for BC: but very difficult to teach if you are not an expert in DevOps. Others use AL:Go for GitHub and you cannot be an expert in both.
-
Introduction to test automation in BC: Great subject, but Docker kind of comes in without introduction. Also it is not enough to import the applications\TestFramework you also need the System\System Application Test Library.
-
Lastly, three different modules about web services. Put them all together.
-
Leave Azure functions after the web services – since we need them to connect to the Azure function.
My recommendations:
Leave the MB-800 stuff out of here
- Start your free BC trial
- Introduction to the capabilities of BC
- Customize BC
- Manage users and implement security in BC
- Use Power Automate with BC
Split the development course into two courses:
Introduction to BC development (Level Beginner)
Then restructure the course. It needs to be one coherent solution, create the project, create a repo, create a table, add data to the table, create other objects that uses the table data.
- Introduction to the development environment for BC
- Work with source control using Git in Visual Studio Code for BC
- Introduction to the basics of AL programming in BC
- Work with tables in BC
- Work with pages in BC
- Design the data model of a report in BC
-
Work with codeunits in BC including
- Event programming
- Install codeunits
- Upgrade codeunits
- Work with XMLports in BC
- Work with queries in BC
- Work with entitlements and permission sets in
- Customize the UI experience in BC
- Prepare for an easy application upgrade experience in BC
- Maybe an introduction to testing
-
Maybe an introduction to web services
Advanced administration and development (Level Advanced)
- MB-820 in one day – general highlights for the exam
- Administer BC online
- Debug and deploy your extension in BC
- Build control add-in objects in BC
- Use Application Lifecycle Management for
- Introduction to test automation in BC
- Learn about application performance and monitoring in Business Central
- Access REST services from within BC
- Work with web services in BC
- Work with the API in BC
- Use Azure Functions with BC
Hopefully this will help others to reorganize the course before attempting to conduct the course.