diff --git a/RELEASE.md b/RELEASE.md
index d41b5bb8b..ff17acb87 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,89 +1,241 @@
-# Quality Assurance
+# Release Workflow
-Review and test the changes and issues for this version.
-https://github.com/icinga/icingaweb2
+#### Table of Content
-# Release Workflow
+- [1. Preparations](#preparations)
+ - [1.1. Issues](#issues)
+ - [1.2. Backport Commits](#backport-commits)
+ - [1.3. Authors](#authors)
+- [2. Version](#version)
+- [3. Changelog](#changelog)
+- [4. Git Tag](#git-tag)
+- [5. Package Builds](#package-builds)
+ - [5.1. RPM Packages](#rpm-packages)
+ - [5.2. DEB Packages](#deb-packages)
+- [6. Build Server](#build-server)
+- [7. Release Tests](#release-tests)
+- [8. GitHub Release](#github-release)
+- [9. Post Release](#post-release)
+ - [9.1. Online Documentation](#online-documentation)
+ - [9.2. Announcement](#announcement)
+ - [9.3. Project Management](#project-management)
-## Authors
+## Preparations
+
+Specify the release version.
+
+```
+VERSION=2.6.0
+```
+
+Add your signing key to your Git configuration file, if not already there.
+
+```
+vim $HOME/.gitconfig
+
+[user]
+ email = michael.friedrich@icinga.com
+ name = Michael Friedrich
+ signingkey = D14A1F16
+```
+
+### Issues
+
+Check issues at https://github.com/Icinga/icingaweb2
+
+### Backport Commits
+
+For minor versions not branched off git master you need
+to manually backports any and all commits from the
+master branch which should be part of this release.
+
+### Authors
Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
- $ git log --use-mailmap | grep ^Author: | cut -f2- -d' ' | sort | uniq > AUTHORS
+```
+git log --use-mailmap | grep '^Author:' | cut -f2- -d' ' | sort | uniq > AUTHORS
+```
-## Version
+## Version
-Update the version number in the following files:
+Update the version in the following files:
-* [icingaweb2.spec] (ensure that the revision is properly set)
-* [VERSION]
-* Application Version: [library/Icinga/Application/Version.php]
-* Module Versions in modules/*/module.info
+* [VERSION](VERSION)
+* Application Version: [library/Icinga/Application/Version.php](library/Icinga/Application/Version.php)
+* Module Versions in `modules/*/module.info`
Commands:
- VERSION=2.0.0
+```
+echo "v$VERSION" > VERSION
+sed -i '' "s/const VERSION = '.*'/const VERSION = '$VERSION'/g" library/Icinga/Application/Version.php
+find . -type f -name '*.info' -exec sed -i '' "s/Version: .*/Version: $VERSION/g" {} \;
+```
- vim icingaweb2.spec
+## Changelog
- echo "v$VERSION" > VERSION
+Link to the milestone and closed=1 as filter.
- sed -i '' "s/const VERSION = '.*'/const VERSION = '$VERSION'/g" library/Icinga/Application/Version.php
+## Git Tag
- find . -type f -name '*.info' -exec sed -i '' "s/Version: .*/Version: $VERSION/g" {} \;
+```
+git commit -v -a -m "Release version $VERSION"
+```
-## Changelog
+Create a signed tag (tags/v) on the `master` branch (for major
+releases) or the `support` branch (for minor releases).
-Update the [ChangeLog](ChangeLog) file using
-the changelog.py script.
+```
+git tag -s -m "Version $VERSION" v$VERSION
+```
-Changelog:
+Push the tag:
- $ ./changelog.py --version 2.0.0
+```
+git push --tags
+```
-Wordpress:
+**For major releases:** Create a new `support` branch:
- $ ./changelog.py --version 2.0.0 --html --links
+```
+git checkout master
+git checkout -b support/2.6
+git push -u origin support/2.6
+```
-## Git Tag
+## Package Builds
-Commit these changes to the "master" branch:
+### RPM Packages
- $ git commit -v -a -m "Release version "
+```
+git clone git@github.com:icinga/rpm-icingaweb2.git && cd rpm-icingaweb2
+```
-For minor releases: Cherry-pick this commit into the "support" branch.
+#### Branch Workflow
-Create a signed tag (tags/v) on the "master" branch (for major
-releases) or the "support" branch (for minor releases).
+**Major releases** are branched off `master`.
- $ git tag -m "Version " v
+```
+git checkout master && git pull
+```
-Push the tag.
+**Bugfix releases** are created in the `release` branch and later merged to master.
- $ git push --tags
+```
+git checkout release && git pull
+```
-For major releases: Create a new "support" branch:
+#### Release Commit
- $ git checkout master
- $ git checkout -b support/2.x
- $ git push -u origin support/2.x
+Set the `Version`, `Revision` and `changelog` inside the spec file.
-# External Dependencies
+```
+sed -i "s/Version: .*/Version: $VERSION/g" icingaweb2.spec
-## Build Server
+vim icingaweb2.spec
-### Linux
+%changelog
+* Fri Apr 27 2018 Eric.Lippmann 2.5.3-1
+- Update to 2.5.3
+```
+
+```
+git commit -av -m "Release 2.5.3-1"
+git push
+```
+
+**Note for major releases**: Update release branch to latest.
+`git checkout release && git pull && git merge master && git push`
+
+**Note for minor releases**: Cherry-pick the release commit into master.
+`git checkout master && git pull && git cherry-pick release && git push`
+
+
+### DEB Packages
+
+```
+git clone git@github.com:icinga/deb-icingaweb2.git && cd deb-icingaweb2
+```
+
+#### Branch Workflow
+
+**Major releases** are branched off `master`.
+
+```
+git checkout master && git pull
+```
+
+**Bugfix releases** are created in the `release` branch and later merged to master.
+
+```
+git checkout release && git pull
+```
+
+#### Release Commit
+
+Set the `Version`, `Revision` and `changelog` inside the spec file.
+
+```
+./dch 2.5.3-1 "Update to 2.5.3"
+```
+
+```
+git commit -av -m "Release 2.5.3-1"
+git push
+```
+
+```
+git commit -av -m "Release 2.5.3-1"
+```
+
+**Note for major releases**: Update release branch to latest.
+`git checkout release && git pull && git merge master && git push`
+
+**Note for minor releases**: Cherry-pick the release commit into master.
+`git checkout master && git pull && git cherry-pick release && git push`
+
+
+#### DEB with dch on macOS
+
+```
+docker run -v `pwd`:/mnt/packaging -ti ubuntu:xenial bash
+
+apt-get update
+apt-get install git dev-tools vim
+cd /mnt/packaging
+
+git config --global user.name "Eric Lippmann"
+git config --global user.email "eric.lippmann@icinga.com"
+
+./dch 2.5.3-1 "Update to 2.5.3"
+```
+
+## Build Server
+
+* Verify package build changes for this version.
+* Test the snapshot packages for all distributions beforehand.
+* Build the newly created Git tag for Debian/RHEL/SuSE.
+
+## Release Tests
-* Build the newly created git tag for Debian/RHEL/SuSE.
* Provision the vagrant boxes and test the release packages.
-## Github Release
+## GitHub Release
-Create a new release from the newly created git tag.
-https://github.com/Icinga/icingaweb2/releases
+Create a new release for the newly created Git tag: https://github.com/Icinga/icingaweb2/releases
-## Announcement
+### Online Documentation
+
+Ask @bobapple to update the documentation at docs.icinga.com.
+
+### Announcement
* Create a new blog post on www.icinga.com/blog
-* Send announcement mail to icinga-announce@lists.icinga.org
-* Social media: [Twitter](https://twitter.com/icinga), [Facebook](https://www.facebook.com/icinga), [G+](http://plus.google.com/+icinga), [Xing](https://www.xing.com/communities/groups/icinga-da4b-1060043), [LinkedIn](https://www.linkedin.com/groups/Icinga-1921830/about)
+* Social media: [Twitter](https://twitter.com/icinga), [Facebook](https://www.facebook.com/icinga), [G+](https://plus.google.com/+icinga), [Xing](https://www.xing.com/communities/groups/icinga-da4b-1060043), [LinkedIn](https://www.linkedin.com/groups/Icinga-1921830/about)
+* Update IRC channel topic
+
+### Project Management
+
+* Add new minor version on [GitHub](https://github.com/Icinga/icingaweb2/milestones).
+* Close the released version on [GitHub](https://github.com/Icinga/icingaweb2/milestones).