diff --git a/src/call.cpp b/src/call.cpp
index 6d8a969f9d1906af02576b7d07605f87fcf51812..c8cca0c4105b345702bb5f654662aff25e2d761a 100644
--- a/src/call.cpp
+++ b/src/call.cpp
@@ -2077,6 +2077,8 @@ QVariant Call::roleData(int role) const
       case static_cast<int>(Ring::Role::Object):
       case static_cast<int>(Call::Role::Object):
          return QVariant::fromValue(const_cast<Call*>(this));
+      case static_cast<int>(Ring::Role::ObjectType):
+         return QVariant::fromValue(Ring::ObjectType::Call);
       case static_cast<int>(Call::Role::ContactMethod):
          return QVariant::fromValue(peerContactMethod());
       case static_cast<int>(Call::Role::Photo):
diff --git a/src/contactmethod.cpp b/src/contactmethod.cpp
index 09025e0c2c078b26e795a121f2df38cfc940c48a..2af2812afa766981739f5f18f074f13a2d6584f0 100644
--- a/src/contactmethod.cpp
+++ b/src/contactmethod.cpp
@@ -505,6 +505,9 @@ QVariant ContactMethod::roleData(int role) const
       case static_cast<int>(Role::Object):
          cat = QVariant::fromValue(const_cast<ContactMethod*>(this));
          break;
+      case static_cast<int>(Ring::Role::ObjectType):
+         cat = QVariant::fromValue(Ring::ObjectType::ContactMethod);
+         break;
       case static_cast<int>(Call::Role::IsBookmark):
          cat = false;
          break;
diff --git a/src/person.cpp b/src/person.cpp
index bb5cf9a3452528e4bb50bc2ad1fee27a91f710b0..73a7027753e9764bd3efb6ed5ce66683f703b070 100644
--- a/src/person.cpp
+++ b/src/person.cpp
@@ -539,6 +539,8 @@ QVariant Person::roleData(int role) const
       case static_cast<int>(Ring::Role::Object):
       case static_cast<int>(Person::Role::Object):
          return QVariant::fromValue(const_cast<Person*>(this));
+      case static_cast<int>(Ring::Role::ObjectType):
+         return QVariant::fromValue(Ring::ObjectType::Person);
       case static_cast<int>(Ring::Role::LastUsed):
       case static_cast<int>(Person::Role::DatedLastUsed):
          return QVariant(QDateTime::fromTime_t( lastUsedTime()));