diff --git a/lib/private/Notification/Notification.php b/lib/private/Notification/Notification.php
index 62a48f434fe4b5f44f18e8dbf24e574a170b0f19..9b5877a3058a7684029b67e2992b54df5a65f74e 100644
--- a/lib/private/Notification/Notification.php
+++ b/lib/private/Notification/Notification.php
@@ -397,9 +397,13 @@ class Notification implements INotification {
 			}
 
 			$this->hasPrimaryParsedAction = true;
+
+			// Make sure the primary action is always the first one
+			array_unshift($this->actionsParsed, $action);
+		} else {
+			$this->actionsParsed[] = $action;
 		}
 
-		$this->actionsParsed[] = $action;
 		return $this;
 	}
 
diff --git a/tests/lib/Notification/NotificationTest.php b/tests/lib/Notification/NotificationTest.php
index c6ededf01424efe6d512afeb11964363d8e1136f..93d48dfd60462bb2e5a9b08772d6f832ba787f3d 100644
--- a/tests/lib/Notification/NotificationTest.php
+++ b/tests/lib/Notification/NotificationTest.php
@@ -495,6 +495,35 @@ class NotificationTest extends TestCase {
 		$this->notification->addParsedAction($action);
 	}
 
+	public function testAddActionParsedPrimaryEnd() {
+		/** @var \OCP\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */
+		$action1 = $this->getMockBuilder('OCP\Notification\IAction')
+			->disableOriginalConstructor()
+			->getMock();
+		$action1->expects($this->exactly(2))
+			->method('isValidParsed')
+			->willReturn(true);
+		$action1->expects($this->exactly(2))
+			->method('isPrimary')
+			->willReturn(false);
+		/** @var \OCP\Notification\IAction|\PHPUnit_Framework_MockObject_MockObject $action */
+		$action2 = $this->getMockBuilder('OCP\Notification\IAction')
+			->disableOriginalConstructor()
+			->getMock();
+		$action2->expects($this->once())
+			->method('isValidParsed')
+			->willReturn(true);
+		$action2->expects($this->once())
+			->method('isPrimary')
+			->willReturn(true);
+
+		$this->assertSame($this->notification, $this->notification->addParsedAction($action1));
+		$this->assertSame($this->notification, $this->notification->addParsedAction($action2));
+		$this->assertSame($this->notification, $this->notification->addParsedAction($action1));
+
+		$this->assertEquals([$action2, $action1, $action1], $this->notification->getParsedActions());
+	}
+
 	public function dataIsValid() {
 		return [
 			[false, '', false],