diff --git a/src/Text/Pandoc/Readers/RIS.hs b/src/Text/Pandoc/Readers/RIS.hs
index d81b265d1..27c92cec9 100644
--- a/src/Text/Pandoc/Readers/RIS.hs
+++ b/src/Text/Pandoc/Readers/RIS.hs
@@ -88,6 +88,7 @@ risRecordToReference keys = addId $ foldr go defref keys
      case key of
        "TY" -> \ref -> ref{ referenceType =
           fromMaybe "misc" (M.lookup val risTypes) }
+       "ID" -> \ref -> ref{ referenceId = ItemId val }
        "VL" -> addVar "volume" val
        "KW" -> \ref ->
          ref{ referenceVariables =
@@ -100,6 +101,7 @@ risRecordToReference keys = addId $ foldr go defref keys
                (referenceVariables ref) }
        "PB" -> addVar "publisher" val
        "PP" -> addVar "publisher-place" val
+       "DO" -> addVar "DOI" val
        "SP" -> \ref ->
          case M.lookup "page" (referenceVariables ref) of
            Nothing -> addVar "page" val ref
@@ -165,7 +167,10 @@ risRecordToReference keys = addId $ foldr go defref keys
      , referenceType = mempty
      , referenceDisambiguation = Nothing
      , referenceVariables = mempty }
-   addId rec = rec{ referenceId = ItemId (authors <> pubdate) }
+   addId rec =
+     if referenceId rec == mempty
+        then rec{ referenceId = ItemId (authors <> pubdate) }
+        else rec
    authors = T.intercalate "_" $
                [T.takeWhile (\c -> c /= ',' && not (isSpace c)) n
                  | (k, n) <- keys, k == "AU" || k == "A1"]
diff --git a/test/command/7894.md b/test/command/7894.md
index f9c7c1e38..66c90bc9c 100644
--- a/test/command/7894.md
+++ b/test/command/7894.md
@@ -1,6 +1,7 @@
 ```
 % pandoc -f ris -t csljson
 TY  - BOOK
+ID  - Chang_Keisler_Model_Theory
 AU  - Chang, C. C.
 AU  - Keisler, H. Jerome
 PY  - 1990
@@ -47,7 +48,7 @@ ER  -
       }
     ],
     "edition": "3",
-    "id": "Chang_Keisler_1990",
+    "id": "Chang_Keisler_Model_Theory",
     "issued": {
       "date-parts": [
         [