
Learn PL-400 level power platform development: build canvas and model-driven apps, extend with JavaScript, create plugins in C#, connect to Azure, and design tests and error handling.
Master Udemy's video player controls: play/pause, speed, volume, captions, and quality, and access course content, resources, notes, Q&A, announcements, and the certificate of completion.
Guide learners through PL-400 preparation for the Microsoft Power Platform Developer, building on PL-900/100/200 foundations, covering Dataverse, Power Apps, automation, extensibility, and integrations.
Create and configure a Power Platform environment, deploy sample data, and build a model-driven app from the accounts table.
Install visual studio code from code.visualstudio.com, a lightweight editor with downloads for macos, windows, linux. Get the stable x64 build, accept the license, and launch code after installation.
Discover how to extend a model-driven app with client scripting by adding event handlers for OnLoad, OnSave, and OnChange on forms using JavaScript or TypeScript, with libraries and web resources.
Write and register your first JavaScript for a model-driven form by creating a js file, passing the execution context to an on load event to display a hello world notification.
Learn to write to the fax field using form context, identify the field's logical name, and use get attribute and set value with conditional logic for a default if empty.
Explore the executionContext.getFormContext() object, its data, the user interface, and control APIs, including getAttribute, getControl, save, and setFormNotification for managing form behavior.
Learn how to add field notifications in a model-driven form using formContext.getControl and .addNotification, including message, level (recommendation or error), and a uniqueID, with potential to clear later.
Add a second event handler to hide address street three using a unique function name and execution context, then debug with browser dev tools to diagnose set visible errors.
Address a composite field with address one underscore composite and a composition linked control to access address one line three, then hide or show street three based on street two.
Use execution context and form context to read the country attribute, then update the address one postal code label based on United Kingdom using get control and set label.
Create and configure command buttons in the Power Platform app, building a dropdown on the main form command bar with JavaScript or Power FX, including icons, visibility, tooltips, and order.
Define a JavaScript action for a command using the Xrm.Navigation API, wiring a button to a press function and passing the primary control as the form context.
Expand the alert and confirm dialogues by setting the title and button label, and implement a success callback with a promise to run a follow-up function after the dialog completes.
Create a PowerFx action for a split button and learn to use a component library to run formula commands, including notify 'Hello world' and dynamic text with self and item.
Explore how to use visibility rules and the patch function in a model-driven app to show or hide controls, update address one street two, and confirm actions with a dialogue.
Extend the confirm dialog with a title, subtitle, and yes please and no thank you buttons, then use patch, navigate, and launch to update data and move between pages.
Explore the classic interface for building commands with Ribbon Workbench in XrmToolBox, including buttons, rules, and JavaScript actions in a blank solution, contrasted with modern command functions.
Learn to manage dependencies between JavaScript libraries in a model-driven app by linking web resources, editing dependencies in classic, and ensuring proper loading order and parallel loading.
Learn to create a simple PCF component for model-driven and canvas apps, replace standard controls with custom graphics, and use the PAC CLI to install and manage the solution.
Initialize a pcf project for the Power Apps component framework with a namespace and component name, then install Node.js and npm to edit the code.
Configure and explore the code component manifest in a pcf project, learning how to edit the XML manifest, define control and property nodes, and manage data types and resources.
Configure manifest properties for a PCF control by using of-type and of-type-group data types, including SingleLine.Text and TwoOptions, then set usage to bound and build with npm run build.
Learn code component life cycle with init, updateView, getOutputs, and destroy in index.ts. Build a div and a text box, load them into the container, and test with npm start.
Expand the textbox interface by binding the textbox value to context parameters, synchronizing get outputs and update view, handling nulls, and enabling real-time reflection in the test harness.
Add a label interface bound to the is upper case only property in the property bag, update the label to display uppercase when true, and debug synchronization in test harness.
Create a button, attach a click event, and toggle the is uppercase only setting to demonstrate event-driven updates and Power Platform integration for the PL-400 exam.
learn to package your component using msbuild with restore targets, and install or download Visual Studio 2022 or 2019 to prepare for .NET desktop development and plugin development.
Package and deploy your Power Platform component using msbuild in the developer command prompt, authenticate with pack auth, and push with pack pcf push to the correct environment.
Learn to consume cord components in model-driven and canvas apps by enabling the power apps component framework, binding to address city, and managing import, visibility, and updates.
Test and refine a canvas app component in the Power Apps portal by updating the manifest, bindings, and event listeners, then rebuild and update the version before testing.
Redeploy and test an updated code component by rebuilding, authenticating, pushing to the Power Apps platform, and refreshing the component with a second input event listener for the text box.
Explore Microsoft Power Platform component framework samples, inspect code such as LinearInputControl and IncrementControl, and learn how manifests, css, strings, and index.ts bind inputs to outputs and refresh data.
Learn to use the Xrm.device API to access audio, image, video capture, barcode, file picking, and geolocation, with manifest-based enabling and promise-based callbacks.
Explore the WebAPI control's core CRUD operations: create, retrieve, update, delete; plus offline versus online access, select and expand data, and execute actions through sample code using the account entity.
Explore the remaining xrm methods, including html/xml encoding, navigation, and dialog options. Learn to use open file, open url, form, panel, and utility features with global and page context.
Navigate to a custom page using the client API to display contacts within a model-driven app, leveraging a canvas app and custom page with page input and navigation options.
Learn to pass a record id when navigating to a custom page by using the primary control to obtain the form context and record id, then pass a page input.
Set a variable in the custom page onstart to retain the passed record id, then convert the id to a grid and filter related contacts through the accounts relationship.
Create a plug-in outline by building a C# class library in Visual Studio targeting the .NET Framework 4.6.2, installing Microsoft.CrmSdk.CoreAssemblies, and using the plug-in registration tool for Dataverse.
Implement a plug-in by building an execute method, retrieve the IPluginExecutionContext via the service provider, read and modify account address fields, and prepare for pre-validation and pre-operation stages in Dataverse.
Sign the assembly with a strong name key file, build the dll, locate it in the bin\\debug folder, then register the new assembly with the plugin registration tool in Dataverse.
Explain how to link a plug-in to a table with a step, select messages like create, and configure pre-validation, pre-operation, and post-operation stages in the Dataverse execution pipeline.
Enable plugin tracing with the tracing service via the service provider to write trace logs, diagnose execution stages, and use contains key checks in Power Apps.
Learn to use the plugin profiler to replay and debug plugin steps in real time, attach Visual Studio breakpoints, and inspect logs, entities, and keys.
Learn to add robust error catching in a Power Platform plugin by checking input parameters, throwing a custom invalid plugin execution exception, and using try-catch with tracing to manage errors.
Expand plug-in knowledge by using pre-images and post-images to capture old and new values on updates, register these images, and reference them in code.
Implement business logic using pre-images and post-images, testing updates in a model-driven app. Learn to manage preentityimages and postentityimages, register them with the plugin registration tool.
Explore the organization service API and the web API, obtain an organization service via the service factory, and perform create, retrieve, retrieve multiple, update, delete, associate, and disassociate operations.
Learn to create a related row in the account copy table when a new account is created, using the organization service API's create operation, mapping fields and capturing the GUID.
Explore creating a record via service.execute using CreateRequest and CreateResponse to enable duplicate detection rules, then extract the new account id from the CreateResponse.
Learn to update and delete rows using service.update and service.delete, tying new and existing records by the account id and goed, and validating changes like updating a fax number.
Learn to retrieve account data with the organization service api using a guid and column set (name and fax), and retrieve by key attribute collection when a guid is unavailable.
Master retrieving with compound and alternative keys using a key attribute collection, enabling multiple key values. Learn to handle missing attributes and errors with plugin trace logs for debugging.
Learn to retrieve multiple records with a query expression, building condition and filter expressions, selecting the account table columns, and iterating results to output names and fax numbers.
Apply upsert to insert or update data in Dataverse by using an upsert request with an alternative key, tracing results as inserts or updates.
Improve plugin performance by analyzing Dataverse analytics, configuring concurrency with optimistic behavior, and using a custom action message to manage update requests and track table changes.
Learn how transactions manage concurrency during updates, with start, end, rollback, and commit, while preventing dirty reads through locks.
Batch related transactions into a single all-or-nothing unit to ensure consistency, with examples from money transfers and Dynamics 365; timeout; compare execute transaction request with execute multiple for latency.
Enable table change tracking in Dataverse to retrieve only changed rows since the last data token, reducing full table fetches and aiding concurrent loads.
Register a Dataverse custom API message to run a plug-in on a custom event, choosing sync or async processing, and define function or action parameters and a unique name.
Develop a plug-in targeting a custom action message by building a from-scratch .NET Framework 4.6.2 module and implementing the I plug-in interface to output a timestamped response.
Create and deploy a plug-in that triggers a custom API call on a Dataverse business event, using CrmSdk core assemblies and the plugin registration tool, then test and view traces.
Learn how Azure Functions enable serverless workloads, compare the consumption and premium tiers, and create a function app in the Azure portal using the .NET in-process model.
Create an http-triggered azure function in a function app, choosing portal or vscode for development, then test with a name query parameter to return a greeting.
Explore the timer trigger in Azure Functions and how cron schedules control runs using six fields and symbols like stars, slashes, hyphens, and commas.
Install the Azure development workload in Visual Studio, create an Azure Functions project with an http trigger, test locally, and publish using run from package to an Azure Function App.
Learn to offload long-running tasks from the Power Platform using Azure durable functions. Create orchestrator, activity, and client functions in multiple languages, enabling chaining, fan-out, and status monitoring.
Create a long-running Azure function app using Node.js, install the durable-functions package, then build a HTTP start trigger, an orchestrator, and a hello activity to call Tokyo, Seattle, and London.
Define an api using a custom connector to connect an Azure function with Power Platform, then test the connector and build a flow that triggers a mobile notification.
Expand the azure function custom connector by adding a name parameter and replacing code. Update descriptions and defaults, then test in Power Automate flows for Hello, Philip.
Enable and customize a power platform custom connector for azure functions by implementing C# code with ExecuteAsync, forwarding requests, handling 200 OK responses, and transforming returned JSON by appending hi.
Extend an open API definition for a custom connector by using the Swagger Editor and extensions like x-ms-summary, x-ms-visibility, x-ms-api-annotation to customize operations, parameters, and dynamic values.
Modify connector behavior at runtime with policy templates, including set host url, set http header, and set query string parameter for actions and triggers, using url templates and variables.
Learn to create custom connectors for public APIs with Postman, export collections as version 2.1, and import them into Power Platform as custom connectors from Open API, Azure, or GitHub.
Explore authentication options for custom connectors, including basic auth, api key, and OAuth 2.0 with Azure Active Directory app registrations, client ID and secret, and token flows.
This course is a follow-up course for you, if you have already studied for the PL-200 exams. This course covers the additional content required for the PL-400 certification exam, current as per the PL-400 exam update of 29 August 2025 and 19 March 2026.
Please note: This course is not affiliated with, endorsed by, or sponsored by Microsoft.
What do people like you say about this course?
Assia says: Very interesting content ! and like always, the explanation way is amazing !
Elijah says: Matches the quality of all of Phillip Burton's other lessons. So far I have passed several exams using his courses in-tandem with MS learn modules.
Ranjith says: Crystal clear explanation with standard english and quality practical, I wish I had this course earlier...
Anuli says: Awesome course, the explanations were easy to understand, thank you. Consider updating some parts of the course.
This course teaches the requirements for the Microsoft Certificate PL-400 "Power Platform Developer", and focuses on programming in JavaScript/TypeScript and C# to expand the Power Platform.
We'll start off by looking at extending the user experience. Using Visual Studio Code, we will create some JavaScript code that will run when our model-driven app is opened. We'll then create some command buttons, along code to run when the user clicks these. We will then concentrate on create code components, replacing existing parts of the model-driven app.
We'll then look at creating a plug-in. The code that we'll write in Visual Studio will be attached to messages created by Power Platform, allowing our code to run when Dataverse rows are created, updated or deleted. We'll also look at creating our own custom messages as well.
Next up is Custom Connectors. We will create an Azure Function, and find out when it can run. We will then integrate that Function into our Power Platform by creating a custom connector. We'll also register external endpoints, including in Azure, so that messages can be automatically sent to other apps, reducing the burden on the Power Platform.
We'll finish off by looking at creating a technical design, and any other requirements not covered in previous exams, such as advanced Power Automate flows and implementing Application Lifecycle Management (ALM).
No prior knowledge is required - we'll even see how to get a free Power Platform trial!
There are regular quizzes to help you remember the information, so you can be sure that you are learning.
Once you have completed this course, you will have a good knowledge of how to make extend Power Platform using JavaScript and C#. And with some practice, and knowledge gained when studying for the PL-200 exams, you could even go for the official Microsoft certification PL-400 - wouldn't that look good on your CV or resume? And if you are an American college student, you might even get college credit for passing that exam.
So, without any further ado, let's have a look at how you can use Udemy interface, and then we'll have a look at the objectives for the exam and therefore the syllabus for this course.