diff --git a/doc/workflow/README.md b/doc/workflow/README.md
index 6e70235f5b88c429075bb660ea62a97381cfceda..7e3fc49f704fda79bba8ec7932dcbf70e11a2abc 100644
--- a/doc/workflow/README.md
+++ b/doc/workflow/README.md
@@ -1,6 +1,7 @@
 # Workflow
 
 - [Feature branch workflow](workflow.md)
+- [Code forking workflow](forking_workflow.md)
 - [Project Features](project_features.md)
 - [Authorization for merge requests](authorization_for_merge_requests.md)
 - [Groups](groups.md)
diff --git a/doc/workflow/forking/branch_select.png b/doc/workflow/forking/branch_select.png
new file mode 100644
index 0000000000000000000000000000000000000000..275f64d113baa4800fe6a49c366d5bb3c1237068
Binary files /dev/null and b/doc/workflow/forking/branch_select.png differ
diff --git a/doc/workflow/forking/fork_button.png b/doc/workflow/forking/fork_button.png
new file mode 100644
index 0000000000000000000000000000000000000000..def4266476ad23531e7299ace79fa4e999b3d94c
Binary files /dev/null and b/doc/workflow/forking/fork_button.png differ
diff --git a/doc/workflow/forking/groups.png b/doc/workflow/forking/groups.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ac64b3c8e746317376a7e0c6fa2b1df9e7a4569
Binary files /dev/null and b/doc/workflow/forking/groups.png differ
diff --git a/doc/workflow/forking/merge_request.png b/doc/workflow/forking/merge_request.png
new file mode 100644
index 0000000000000000000000000000000000000000..2dc00ed08a1df18629be937740f32ef35abbb87f
Binary files /dev/null and b/doc/workflow/forking/merge_request.png differ
diff --git a/doc/workflow/forking_workflow.md b/doc/workflow/forking_workflow.md
new file mode 100644
index 0000000000000000000000000000000000000000..32cee3e4f3c7c3253e96eb750ba63ce8bc857a39
--- /dev/null
+++ b/doc/workflow/forking_workflow.md
@@ -0,0 +1,33 @@
+# Code forking workflow
+
+Forking a project to your own namespace is useful if you have no write access to the project you want to contribute
+to. If you do have write access, we recommend using the **[Code Branching Workflow](https://about.gitlab.com/2014/09/29/gitlab-flow/)**.
+
+## Creating a fork
+
+In order to create a fork of a project, all you need to do is click on the fork button located on the top right side
+of the screen, close to the project's URL and right next to the stars button.
+
+![Fork button](/forking/fork_button.png)
+
+Once you do that you will see a screen where you can choose the namespace, to where you want to add the fork. This page
+will contain the groups you have write access to. Choose one of the groups and the project will be added there.
+
+![Groups view](/forking/groups.png)
+
+After the forking is done, you can start working on the newly created repository. There you will have full Owner access,
+so you can set it up as you please.
+
+## Merging upstream
+
+Once you are ready to send your code back to the main project, you need to create a Merge request. Choose your forked
+project's main branch as the source and the original project's main branch as the destination and create the merge request.
+
+![Selecting branches](/forking/branch_select.png)
+
+You can then assign the Merge Request to someone so they can review your changes. After they have reviewed them, the will
+be added to the main project, if maintainer chooses to do so.
+
+![New merge request](/forking/merge_request.png)
+
+