diff --git a/src/main/java/org/apache/tomee/website/AddBacktickToAnnotations.java b/src/main/java/org/apache/tomee/website/AddBacktickToAnnotations.java
new file mode 100644
index 0000000..01ea9d7
--- /dev/null
+++ b/src/main/java/org/apache/tomee/website/AddBacktickToAnnotations.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.tomee.website;
+
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.util.Join;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.regex.Pattern;
+
+public class AddBacktickToAnnotations {
+
+    private static final String REGEX = "([^=*].*)([^`]@\\w+)(.*)";
+
+    private static final Pattern annotation = Pattern.compile(REGEX);
+
+    private static final AtomicBoolean isCodeBlock = new AtomicBoolean(false);
+
+    public static void main(String[] args) throws Exception {
+
+        final File docs = new File("repos/tomee-8.0/docs/");
+
+        Files.walk(docs.toPath())
+             .map(Path::toFile)
+             .filter(File::isFile)
+             .filter(path -> path.getName().endsWith(".adoc"))
+             .forEach(AddBacktickToAnnotations::process);
+
+    }
+
+    public static void process(final File destReadme) {
+        try {
+            final List<String> completed = new ArrayList<>();
+            for (String line : IO.slurp(destReadme).split("\n")) {
+                if (line == null) { return; }
+                if (line.equals("----")) {
+                    if (!isCodeBlock.get()) {
+                        isCodeBlock.set(true);
+                    } else {
+                        isCodeBlock.set(false);
+                    }
+                    completed.add(line);
+                } else if (!isCodeBlock.get()) {
+                    completed.add(replace(line));
+                } else {
+                    completed.add(line);
+                }
+            }
+            // Update the destination readme file
+            IO.copy(IO.read(Join.join("\n", completed) + "\n"), destReadme);
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static String replace(final String line) {
+        if (annotation.matcher(line).matches()) {
+            return line.replaceAll("([^a-z|`])(@\\w+)", "$1`$2`");
+        } else {
+            return line;
+        }
+    }
+}
diff --git a/src/main/jbake/content/community/contributing/contribution-tips.adoc b/src/main/jbake/content/community/contributing/contribution-tips.adoc
index b6a8a69..59d6282 100755
--- a/src/main/jbake/content/community/contributing/contribution-tips.adoc
+++ b/src/main/jbake/content/community/contributing/contribution-tips.adoc
@@ -27,55 +27,7 @@
 
 === What is the process?
 
-```
-public void contributeToOpenSource() {
-
-    boolean stillInterestedAndHavingFun = true;
-    int taskSize = 1; // start small!
-
-    contributing:
-    while (stillInterestedAndHavingFun) {
-
-        Task task = findSomethingInteresting(taskSize++);
-
-        if (!task.hasJira()) {
-            createJira(task);
-        } else {
-            requestToBeAssignedToJira(task.jiraId());
-        }
-
-        while (task.inProgress()) {
-
-            chatOnListALittleGetCleverIdeas(task, new Ideas(task));
-            hackALittle(task);
-
-            if (task.tooHard() || task.notFun()) {
-                // no big deal, try again with something else
-                taskSize--;
-                continue contributing;
-            }
-        }
-
-        File patchFile = createSvnOrGitPatch(task);
-        attachToJira(task.jiraId(), patchFile);
-        askForReviewOnList(task.jiraId());
-
-        while (!committed(patchFile)) {
-
-            try {
-                pokeAtSometingElse();
-                helpOnUserList();
-                dayDream();
-            } catch (MoreThanAWeekException e) {
-                // Assume it fell off the radar -- happens.
-                // Evidence we need more committers.
-                bumpThreadOnList(task);
-            }
-        }
-    }
-
-}
-```
+Check and follow the link:workflow.html[workflow for contributing].
 
 After a while when people feel comfortable with you as contributor, they vote you in as a committer and ... big surprise ... there's almost no change in the daily routine. You get access to svn and pretty much everything else stays the same. Instead of submitting patches, now you have to help review them and commit them. Instead of learning how to contribute to an open source project, now you have to learn how to help others get involved. And of course it doesn't happen all at once, you never stop learning these things and you never stop wishing you had more time.
 
diff --git a/src/main/jbake/content/community/contributing/jira-ticket.adoc b/src/main/jbake/content/community/contributing/jira-ticket.adoc
new file mode 100644
index 0000000..e7e3c43
--- /dev/null
+++ b/src/main/jbake/content/community/contributing/jira-ticket.adoc
@@ -0,0 +1,23 @@
+= JIRA ticket
+:jbake-date: 2018-12-10
+:jbake-type: page
+:jbake-status: published
+
+
+In order to keep track of all the tasks concerning TomEE there should be a ticket in the link:https://issues.apache.org/jira/browse/TOMEE[TomEE JIRA] for each work item. +
+Before you can create tickets, you have to link:https://issues.apache.org/jira/secure/Signup!default.jspa[sign up] for an account.
+
+=== No task without a ticket
+Before you start working on a task you should ensure that there is a ticket for your task. +
+Browse JIRA and use the search funktion to find out if there is already a ticket for what you want to pick up.
+If not, create a new one.
+
+=== Avoiding conflicts and wasted effort
+If a ticket already exists and is assign to someone you should not start working on this task. +
+If you want to help, contact the assigned person using the mailing list or write a comment in the JIRA ticket.
+
+=== Pick up a task
+To inform others that you are working on a task, the corresponding ticket in JIRA should be assigned to you. +
+If you don't have permission to assign tickets (there is no edit sign behind the Field "Assignee"), just ask on the developers mailing list.
+
+(link:workflow.html[back to Contribution workflow])
diff --git a/src/main/jbake/content/community/contributing/process-task.adoc b/src/main/jbake/content/community/contributing/process-task.adoc
new file mode 100644
index 0000000..3da95ca
--- /dev/null
+++ b/src/main/jbake/content/community/contributing/process-task.adoc
@@ -0,0 +1,27 @@
+= Process task
+:jbake-date: 2018-12-10
+:jbake-type: page
+:jbake-status: published
+
+
+=== Fork project repository
+You can work on the link:../sources.html[source code of TomEE] using github. If you don't have a github account, you can link:https://github.com/[sign up here]. +
+To create your own working area, go to the project link:https://github.com/apache/tomee[TomEE on github] and click on the link "Fork". A forked repository will be created for your account and you will be redirected to it.
+
+=== One branch for each ticket
+Although you can work on the master branch it is advisable to create a new branch for each ticket you start to work on - even if it's only one.
+Use the JIRA id and title as name of the branch. 
+
+=== Get help
+If you need help or want to have feedback for your ideas write to the developes mailing list.
+
+=== Hands on
+Work on the code. Use local commit as often as you want. Use push (to your own forked repository) as often as you like. +
+Consider the link:contribution-tips.html[contribution tips]. +
+If a task is to hard to get it done: no problem. Just ask for help. +
+If you want to cancel working on a task, don't forget to unassign the JIRA ticket!
+
+=== Comments in JIRA
+Use comments for the JIRA ticket to document your work.
+
+(link:workflow.html[back to Contribution workflow])
diff --git a/src/main/jbake/content/community/contributing/submit-changes.adoc b/src/main/jbake/content/community/contributing/submit-changes.adoc
new file mode 100644
index 0000000..29beada
--- /dev/null
+++ b/src/main/jbake/content/community/contributing/submit-changes.adoc
@@ -0,0 +1,55 @@
+= Submit changes
+:jbake-date: 2018-12-10
+:jbake-type: page
+:jbake-status: published
+
+=== Ensure code compiles
+Actually no need to be mentioned ... 
+
+=== Ensure tests passes
+On the build system for TomEE additional tests are run. If your changes cause them to fail, the build will not succeed.
+This can be avoided by running the tests before submitting the changes, the commands are:
+[source]
+----
+mvn -Pstyle checkstyle:check
+mvn -Pstyle pmd:check
+----
+These are relatively quick to run - about a minute or so. 
+
+=== Smoke test
+Check at least if the server ist still starting with your changes ...
+
+=== Pull request
+If you're confident of your work, the next step is to push your changes into your repository on github.
+To get your changes back into the TomEE repository you have to create a PR (pull request): on github go to your repository and select the branch where you have worked on.
+Click on "New pull request" and then on "Create pull request".
+
+=== Request review
+The changes in your PR can only be merged by a committer who will do a review before merging. 
+So ask on the developers mailing list for review of your PR. 
+These emails for PRs should have a description of the work in the subject line.  
+Here are some examples and why:
+
+==== Bad 
+- This is an email about PR #451
+- See PR #451
+- Review PR #451
+- Help needed in PR #451 +
+
+With this style you'll get low participation on the thread as the subject is hidden.  You yourself will curse these emails in six months or a year in the future when you're looking for that valuable thread you remember, but your search reveals 10 threads all with basically only a number as the subject.  You'll either click and read all 10 PRs and email threads, or you'll more likely just give up.  Worse, you may read all 10 and not find what you're looking for.  Do your future self a favor and help him/her find the valuable discussions.
+
+==== Ok ...
+- Options pertaining to the configuration of Javamail - PR# 451
+- Fixing issues on failover of JMS messages - PR# 451
+- Documenting deployment of JCA Connectors - PR# 451 +
+
+These are ok, much better than just a number.  Subjects are often truncated.  The real "meat" is at the end of the sentence which makes it the first to go.  Not a show-stopper, but can make your life hard when searching or scanning.
+
+==== Best!
+- Javamail configuration options - PR# 451
+- JMS Failover issues - PR# 451
+- JCA connector deployment - PR# 451 +
+
+Here we flip it.  The real subject as at the beginning.  The verbs and generic nouns like "options" come after.  When you can pull it off, huge respect. 
+
+(link:workflow.html[back to Contribution workflow])
diff --git a/src/main/jbake/content/community/contributing/workflow.adoc b/src/main/jbake/content/community/contributing/workflow.adoc
new file mode 100644
index 0000000..307a5a1
--- /dev/null
+++ b/src/main/jbake/content/community/contributing/workflow.adoc
@@ -0,0 +1,40 @@
+= Contribution Workflow
+:jbake-date: 2018-12-08
+:jbake-type: page
+:jbake-status: published
+
+:numbered:
+
+
+
+=== JIRA ticket
+- create ticket in JIRA, if not already existing
+- if ticket already assigned to someone else => talk
+- assign ticket to contributor, if not already assigned +
+  (link:jira-ticket.html[more details])
+
+
+
+=== Process Task
+- fork repository
+- create branch in own repository (name = JIRA ticket id)
+- discuss on mailing list
+- work on code
+- document work in JIRA ticket +
+  (link:process-task.html[more details])
+
+=== Submit Changes
+- ensure code compiles 
+- ensure tests passes
+- create PR (pull request)
+- ask for review on mailing list +
+  (link:submit-changes.html[more details])
+
+=== Merge Changes (done by a committer)
+- review changes
+- merge code
+- change JIRA ticket status / close ticket +
+
+=== Cleanup
+- wait until PR is merged (ticket status change)
+- remove branch in own repository +
diff --git a/src/main/jbake/content/community/index.adoc b/src/main/jbake/content/community/index.adoc
index fd18c28..a222d62 100755
--- a/src/main/jbake/content/community/index.adoc
+++ b/src/main/jbake/content/community/index.adoc
@@ -7,6 +7,7 @@
 === Contribute
 
 - link:contributing/contribution-tips.html[Contribution tips]
+- link:contributing/workflow.html[Contribution workflow]
 - link:sources.html[Apache TomEE]
 - link:contributing/website.html[This website]
 - link:contributors.html[TomEE Wall Of Fame]
