diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index 9518f89..17e3dfb 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -207,6 +207,8 @@
                 subject='Discussion for Merge Request #:%s: %s' % (
                     mr.request_number, mr.summary))
             session(t).flush()
+            g.director.create_activity(c.user, 'created', mr,
+                                       related_nodes=[c.project], tags=['merge-request'])
             redirect(mr.url())
 
     @without_trailing_slash
@@ -466,6 +468,9 @@
 
         if changes:
             self.req.add_meta_post(changes=changes)
+            g.director.create_activity(c.user, 'updated', self.req,
+                                       related_nodes=[c.project], tags=['merge-request'])
+
         redirect(self.req.url())
 
     @expose()
@@ -475,6 +480,8 @@
         if status and self.req.status != status and \
            (has_access(self.req, 'write') or (self.req.creator == c.user and status == 'rejected')):
             self.req.add_meta_post(changes={'Status': [self.req.status, status]})
+            g.director.create_activity(c.user, 'updated', self.req,
+                                       related_nodes=[c.project], tags=['merge-request'])
             self.req.status = status
         redirect('.')
 
diff --git a/Allura/allura/model/repository.py b/Allura/allura/model/repository.py
index 4c508b7..0a22230 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -807,6 +807,12 @@
     def activity_name(self):
         return 'merge request #%s' % self.request_number
 
+    @property
+    def activity_extras(self):
+        d = ActivityObject.activity_extras.fget(self)
+        d.update(summary=self.summary)
+        return d
+
     @LazyProperty
     def creator(self):
         from allura import model as M
diff --git a/Allura/allura/tasks/repo_tasks.py b/Allura/allura/tasks/repo_tasks.py
index a9a89d7..f84de1a 100644
--- a/Allura/allura/tasks/repo_tasks.py
+++ b/Allura/allura/tasks/repo_tasks.py
@@ -158,6 +158,8 @@
     mr.app.repo.merge(mr)
     mr.add_meta_post(changes={'Status': [mr.status, 'merged']})
     mr.status = 'merged'
+    g.director.create_activity(c.user, 'merged', mr,
+                               related_nodes=[c.project], tags=['merge-request'])
     session(mr).flush(mr)
 
 
diff --git a/Allura/allura/tests/model/test_repo.py b/Allura/allura/tests/model/test_repo.py
index fc30c43..3761821 100644
--- a/Allura/allura/tests/model/test_repo.py
+++ b/Allura/allura/tests/model/test_repo.py
@@ -691,8 +691,9 @@
         self.mr = M.MergeRequest(
             app_config=mock.Mock(_id=ObjectId()),
             downstream={'commit_id': '12345'},
+            request_number=1,
         )
-        self.mr.app = mock.Mock(forkable=True)
+        self.mr.app = mock.Mock(forkable=True, url='/mock-app-url/')
         self.mr.app.repo.commit.return_value = mock.Mock(_id='09876')
         self.mr.merge_allowed = mock.Mock(return_value=True)
         self.mr.discussion_thread = mock.Mock()
diff --git a/Allura/allura/tests/test_tasks.py b/Allura/allura/tests/test_tasks.py
index abfa021..2f4de42 100644
--- a/Allura/allura/tests/test_tasks.py
+++ b/Allura/allura/tests/test_tasks.py
@@ -67,7 +67,8 @@
     @mock.patch('allura.tasks.repo_tasks.session', autospec=True)
     @mock.patch.object(M, 'MergeRequest', autospec=True)
     def test_merge(self, MR, session):
-        mr = mock.Mock(_id='_id')
+        mr = mock.Mock(_id='_id',
+                       activity_name='merge req', activity_url='/fake/url', activity_extras={}, node_id=None)
         MR.query.get.return_value = mr
         repo_tasks.merge(mr._id)
         mr.app.repo.merge.assert_called_once_with(mr)
