diff --git a/Allura/allura/ext/user_profile/templates/user_index.html b/Allura/allura/ext/user_profile/templates/user_index.html
index af87c8e..2ccaacd 100644
--- a/Allura/allura/ext/user_profile/templates/user_index.html
+++ b/Allura/allura/ext/user_profile/templates/user_index.html
@@ -22,7 +22,6 @@
   {% if user.preferences.email_address %}
     <p>{{lib.gravatar(user)}}</p>
   {% endif %}
-  {{c.project.description_html|safe}}
   <div class="project-list grid-18">
     <b>Projects</b>
     <ul>
diff --git a/scripts/migrations/023-migrate-custom-profile-text.py b/scripts/migrations/023-migrate-custom-profile-text.py
new file mode 100644
index 0000000..6ee0617
--- /dev/null
+++ b/scripts/migrations/023-migrate-custom-profile-text.py
@@ -0,0 +1,59 @@
+import logging
+
+from pylons import c
+
+from ming.orm import ThreadLocalORMSession
+
+from allura import model as M
+from forgewiki import model as WM
+from forgewiki.wiki_main import ForgeWikiApp
+
+log = logging.getLogger(__name__)
+
+default_description = u'You can edit this description in the admin page'
+
+default_personal_project_tmpl = ("This is the personal project of %s."
+            " This project is created automatically during user registration"
+            " as an easy place to store personal data that doesn't need its own"
+            " project such as cloned repositories.\n%s")
+
+def main():
+    for p in M.Project.query.find().all():
+        user = p.private_project_of()
+        if not user:
+            continue
+
+        app = p.app_instance('wiki')
+        if app is None:
+            p.install_app('wiki')
+
+        c.app = app
+        c.project = p
+        c.user = user
+
+        page = WM.Page.query.get(app_config_id=c.app.config._id, title='Home')
+        if page is None:
+            c.app.install(p)
+            page = WM.Page.query.get(app_config_id=c.app.config._id, title='Home')
+            if page is None:
+                log.info("Can't add page for %s home project" % user.username)
+                continue
+
+        description = p.description
+        if description is None or description == "":
+            description = default_description
+
+        if "This is the personal project of" in page.text:
+            if description not in page.text:
+                page.text = "%s\n%s" % (page.text, description)
+        elif "This is the default page" in page.text:
+            page.text = default_personal_project_tmpl % (user.username, description)
+        else:
+            pass
+
+        log.info("Update wiki home page text for %s" % user.username)
+
+    ThreadLocalORMSession.flush_all()
+
+if __name__ == '__main__':
+    main()
