diff --git a/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java b/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java
index 6a39c246d03d2e6d34b21bca8f8b12209404bff9..cc67e10fbdfb031a042ef5a8d59d8a0e8ae70740 100755
--- a/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java
+++ b/Core/src/org/sleuthkit/autopsy/communications/relationships/MessageNode.java
@@ -87,7 +87,9 @@ protected Sheet createSheet() {
 
         sheetSet.put(new NodeProperty<>("Type", Bundle.MessageNode_Node_Property_Type(), "", getDisplayName())); //NON-NLS
         
-        BlackboardArtifact artifact = this.getArtifact();
+        sheetSet.put(new NodeProperty<>("ThreadID", "ThreadID","",threadID == null ? UNTHREADED_ID : threadID)); //NON-NLS
+
+        final BlackboardArtifact artifact = getArtifact();
 
         BlackboardArtifact.ARTIFACT_TYPE fromID = BlackboardArtifact.ARTIFACT_TYPE.fromID(artifact.getArtifactTypeID());
         if (null != fromID) {
@@ -107,8 +109,6 @@ protected Sheet createSheet() {
                     } catch (TskCoreException ex) {
                         logger.log(Level.WARNING, "Error loading attachment count for " + artifact, ex); //NON-NLS
                     }
-                    
-                    sheetSet.put(new NodeProperty<>("ThreadID", "ThreadID","",threadID == null ? "" : threadID)); //NON-NLS
 
                     break;
                 case TSK_MESSAGE:
diff --git a/InternalPythonModules/android/textmessage.py b/InternalPythonModules/android/textmessage.py
index 5d7f9db6384cbc2e065c412c3a22a5e914c68fdd..ef8fa498c898781126c2081f468d8f769b859ca2 100644
--- a/InternalPythonModules/android/textmessage.py
+++ b/InternalPythonModules/android/textmessage.py
@@ -99,13 +99,14 @@ def __findTextsInDB(self, databasePath, abstractFile, dataSource):
         resultSet = None
         try:
             resultSet = statement.executeQuery(
-                "SELECT address, date, read, type, subject, body FROM sms;")
+                "SELECT address, date, read, type, subject, body, thread_id FROM sms;")
             while resultSet.next():
                 address = resultSet.getString("address") # may be phone number, or other addresses
                 date = Long.valueOf(resultSet.getString("date")) / 1000
                 read = resultSet.getInt("read") # may be unread = 0, read = 1
                 subject = resultSet.getString("subject") # message subject
                 body = resultSet.getString("body") # message body
+                thread_id = "{0}_{1}".format(abstractFile.getId(), resultSet.getInt("thread_id"))
                 attributes = ArrayList()
                 artifact = abstractFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_MESSAGE); #create Message artifact and then add attributes from result set.
                 if resultSet.getString("type") == "1":
@@ -119,6 +120,7 @@ def __findTextsInDB(self, databasePath, abstractFile, dataSource):
                 attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_SUBJECT, general.MODULE_NAME, subject))
                 attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TEXT, general.MODULE_NAME, body))
                 attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_MESSAGE_TYPE, general.MODULE_NAME, "SMS Message"))
+                attributes.add(BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_THREAD_ID, general.MODULE_NAME, thread_id))
 
                 artifact.addAttributes(attributes)