diff --git a/data/migratedPages.yml b/data/migratedPages.yml
index 7a357ca06c..c8f36cf530 100644
--- a/data/migratedPages.yml
+++ b/data/migratedPages.yml
@@ -1719,6 +1719,9 @@ Web_services_API:
Web_services_files_handling:
- filePath: "/docs/apis/subsystems/external/files.md"
slug: "/docs/apis/subsystems/external/files"
+Workshop:
+- filePath: "/docs/apis/plugintypes/mod_workshop/index.md"
+ slug: "/docs/apis/plugintypes/mod_workshop/"
Writing_acceptance_tests:
- filePath: "/general/development/tools/behat/writing.md"
slug: "/general/development/tools/behat/writing"
diff --git a/docs/apis/plugintypes/index.md b/docs/apis/plugintypes/index.md
index 9ac047503a..9d4da7d0be 100644
--- a/docs/apis/plugintypes/index.md
+++ b/docs/apis/plugintypes/index.md
@@ -66,9 +66,9 @@ The underscore character is not supported in activity modules for legacy reasons
| [Quiz reports](https://docs.moodle.org/dev/Quiz_reports) | quiz | /mod/quiz/report | Display and analyse the results of quizzes, or just plug miscellaneous behaviour into the quiz module | 1.1+ |
| [Quiz access rules](https://docs.moodle.org/dev/Quiz_access_rules) | quizaccess | /mod/quiz/accessrule | Add conditions to when or where quizzes can be attempted, for example only from some IP addresses, or student must enter a password first | 2.2+ |
| [SCORM reports](https://docs.moodle.org/dev/SCORM_reports) | scormreport | /mod/scorm/report | Analysis of SCORM attempts | 2.2+ |
-| [Workshop grading strategies](https://docs.moodle.org/dev/Workshop_grading_strategies) | workshopform | /mod/workshop/form | Define the type of the grading form and implement the calculation of the grade for submission in the [Workshop](https://docs.moodle.org/dev/Workshop) module | 2.0+ |
-| [Workshop allocation methods](https://docs.moodle.org/dev/Workshop_allocation_methods) | workshopallocation | /mod/workshop/allocation | Define ways how submissions are assigned for assessment in the [Workshop](https://docs.moodle.org/dev/Workshop) module | 2.0+ |
-| [Workshop evaluation methods](https://docs.moodle.org/dev/Workshop_evaluation_methods) | workshopeval | /mod/workshop/eval | Implement the calculation of the grade for assessment (grading grade) in the [Workshop](https://docs.moodle.org/dev/Workshop) module | 2.0+ |
+| [Workshop grading strategies](https://docs.moodle.org/dev/Workshop_grading_strategies) | workshopform | /mod/workshop/form | Define the type of the grading form and implement the calculation of the grade for submission in the [Workshop](./mod_workshop/index.md) module | 2.0+ |
+| [Workshop allocation methods](https://docs.moodle.org/dev/Workshop_allocation_methods) | workshopallocation | /mod/workshop/allocation | Define ways how submissions are assigned for assessment in the [Workshop](./mod_workshop/index.md) module | 2.0+ |
+| [Workshop evaluation methods](https://docs.moodle.org/dev/Workshop_evaluation_methods) | workshopeval | /mod/workshop/eval | Implement the calculation of the grade for assessment (grading grade) in the [Workshop](./mod_workshop/index.md) module | 2.0+ |
| [Blocks](./blocks/index.md) | block | /blocks | Small information-displays or tools that can be moved around pages | 2.0+ |
| [Question types](https://docs.moodle.org/dev/Question_types) | qtype | /question/type | Different types of question (for example multiple-choice, drag-and-drop) that can be used in quizzes and other activities | 1.6+ |
| [Question behaviours](https://docs.moodle.org/dev/Question_behaviours) | qbehaviour | /question/behaviour | Control how student interact with questions during an attempt | 2.1+ |
diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_classes.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_classes.png
new file mode 100644
index 0000000000..8a2a445fd5
Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_classes.png differ
diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_erd.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_erd.png
new file mode 100644
index 0000000000..795207c090
Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_erd.png differ
diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_grades_calculation.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_grades_calculation.png
new file mode 100644
index 0000000000..3c50f92dac
Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_grades_calculation.png differ
diff --git a/docs/apis/plugintypes/mod_workshop/_index/workshop_xml.png b/docs/apis/plugintypes/mod_workshop/_index/workshop_xml.png
new file mode 100644
index 0000000000..64fd6eb9a4
Binary files /dev/null and b/docs/apis/plugintypes/mod_workshop/_index/workshop_xml.png differ
diff --git a/docs/apis/plugintypes/mod_workshop/index.md b/docs/apis/plugintypes/mod_workshop/index.md
new file mode 100644
index 0000000000..c0ecad1265
--- /dev/null
+++ b/docs/apis/plugintypes/mod_workshop/index.md
@@ -0,0 +1,63 @@
+---
+title: Workshop
+tags: []
+---
+:::info
+Work in progress
+:::
+
+import { Since } from '@site/src/components';
+
+
+
+This page describes the current implementation of the [Workshop module](https://docs.moodle.org/dev/Workshop_module). See also [Workshop 2.0 specification](https://docs.moodle.org/dev/Workshop_2.0_specification) and [Workshop 2.0 testing](https://docs.moodle.org/dev/Workshop_2.0_testing).
+
+## Overview of Workshop architecture
+
+Rewriting Workshop from scratch for Moodle 2.0 was a great opportunity to use new APIs and approaches to activity module development. In some areas, Workshop was a pioneering component adopting new frameworks - like `File API`, HTML rendering or subplugins support.
+
+Many of Workshop features are implemented as subplugins (see `mod/workshop/db/subplugins.php`). That allows to extend current functionality without hacking Workshop core system.
+
+### Workshop core
+
+Workshop core consists of common module functions in `lib.php` (required by Moodle itself) and methods of class workshop defined in `locallib.php`.
+
+### Grading strategies
+
+Grading strategies are defined as workshopform subplugins in `mod/workshop/form/` subdirectories. At any given time, just one type of the subplugin is used by workshop. But the data are kept so teachers can switch strategies as they need.
+
+### Allocators
+
+Allocation subplugins are used to allocate submissions to the students for peer-review. They are defined as workshopallocation subplugins in `mod/workshop/allocation/` subdirectories. Teacher can use any installed allocator to distribute submission. Allocators are responsible for creating records in `workshop_assessment` table.
+
+### Grading evaluators
+
+Grading evaluators calculate grades for assessments (aka grading grades). They are defined workshopeval subplugins in `mod/workshop/eval/` subdirectories.
+
+## Diagrams and schemas
+
+### Database structure
+
+[400px](https://docs.moodle.org/Image/workshop_erd.png)
+
+
+### XML structure
+
+For the purpose of backup/moodle2, the following XML schema is used.
+[400px](https://docs.moodle.org/Image/workshop_xml.png)
+
+
+### Classes
+
+The following UML diagram explains the structure of classes defined in workshop subplugins.
+[400px](https://docs.moodle.org/Image/workshop_classes.png)
+
+
+### Gradebook integration
+
+[400px](https://docs.moodle.org/Image/workshop_grades_calculation.png)
+
+
+## Debugging and testing
+
+- [Workshop/fakesubmissions.php](https://docs.moodle.org/dev/Workshop/fakesubmissions.php)