diff --git a/validation/test-suite.py b/validation/test-suite.py
index f673549a8b469b7a4b9b8bcff280e67f8f5823e6..a45bfae201994a5e88bd22e39404c91ec3627eb1 100644
--- a/validation/test-suite.py
+++ b/validation/test-suite.py
@@ -39,7 +39,7 @@ def _parse_args():
         "--test-file",
         default=None,
         action="store",
-        help="Only run test for this file.",
+        help="Only run test for this ModelCIF/ mmCIF file.",
     )
     parser.add_argument(
         "-l",
@@ -331,9 +331,32 @@ def _main():
             "status": "aborted",
             "diagnosis": [],
         },
+        # missing items, key & mandatory items missing
+        "missing_items.cif": {
+            "ret_val": 2,
+            "errors": [],
+            "cifcheck-errors": [],
+            "status": "completed",
+            "diagnosis": [
+                'ERROR - In block "Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5", '
+                + 'key item "entity_id" not found in category '
+                + '"entity_poly_seq"',
+                'ERROR - In block "Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5", '
+                + 'mandatory item "entity_id" is not in category '
+                + '"entity_poly_seq"',
+                'ERROR - In block "Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5", '
+                + 'key item "entity_id" not found in category '
+                + '"pdbx_poly_seq_scheme"',
+                'ERROR - In block "Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5", '
+                + 'mandatory item "entity_id" is not in category '
+                + '"pdbx_poly_seq_scheme"',
+                'ERROR - In block "Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5", '
+                + 'mandatory item "label_entity_id" is not in category '
+                + '"atom_site"',
+            ],
+        },
         # duplicated item in _loop category
         # missing category (entity)
-        # missing item (struct_ref.db_name)
         # parent-child relationship issue (remove an atom_type.symbol)
     }
 
diff --git a/validation/test_files/missing_items.cif b/validation/test_files/missing_items.cif
new file mode 100644
index 0000000000000000000000000000000000000000..d8ec661d86a0d7bdaedf3293d0bb58eab4efff30
--- /dev/null
+++ b/validation/test_files/missing_items.cif
@@ -0,0 +1,401 @@
+data_Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5
+_entry.id Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5
+_struct.entry_id Q9Y5J9-Q9Y5L4_UNRELAXED_RANK_1_MODEL_5
+_struct.pdbx_model_details 'Dimer model generated for TIMM8B and TIMM13, produced using AlphaFold-Multimer (AlphaFold v2.2.0) as implemented by ColabFold (v1.2.0) which uses MMseqs2 for MSA generation (UniRef30 + Environmental).'
+_struct.pdbx_structure_determination_methodology computational
+_struct.title 'Predicted interaction between TIMM8B and TIMM13'
+_audit_conform.dict_location https://raw.githubusercontent.com/ihmwg/ModelCIF/557bda7/base/mmcif_ma-core.dic
+_audit_conform.dict_name mmcif_ma.dic
+_audit_conform.dict_version 1.4.1
+#
+loop_
+_citation.id
+_citation.title
+_citation.journal_abbrev
+_citation.journal_volume
+_citation.page_first
+_citation.page_last
+_citation.year
+_citation.pdbx_database_id_PubMed
+_citation.pdbx_database_id_DOI
+1 'ColabFold: making protein folding accessible to all.' 'Nature Methods' 19 679
+682 2022 35637307 10.1038/s41592-022-01488-1
+2
+'MMseqs2 desktop and local web server app for fast, interactive sequence searches.'
+Bioinformatics 35 2856 2858 2019 30615063 10.1093/bioinformatics/bty1057
+3 'Protein complex prediction with AlphaFold-Multimer.' bioRxiv . . . 2021 .
+10.1101/2021.10.04.463034
+#
+#
+loop_
+_citation_author.citation_id
+_citation_author.name
+_citation_author.ordinal
+1 'Mirdita, M.' 1
+1 'Schuetze, K.' 2
+1 'Moriwaki, Y.' 3
+1 'Heo, L.' 4
+1 'Ovchinnikov, S.' 5
+1 'Steinegger, M.' 6
+2 'Mirdita, M.' 7
+2 'Steinegger, M.' 8
+2 'Soeding, J.' 9
+3 'Evans, R.' 10
+3 "O'Neill, M." 11
+3 'Pritzel, A.' 12
+3 'Antropova, N.' 13
+3 'Senior, A.' 14
+3 'Green, T.' 15
+3 'Zidek, A.' 16
+3 'Bates, R.' 17
+3 'Blackwell, S.' 18
+3 'Yim, J.' 19
+3 'Ronneberger, O.' 20
+3 'Bodenstein, S.' 21
+3 'Zielinski, M.' 22
+3 'Bridgland, A.' 23
+3 'Potapenko, A.' 24
+3 'Cowie, A.' 25
+3 'Tunyasuvunakool, K.' 26
+3 'Jain, R.' 27
+3 'Clancy, E.' 28
+3 'Kohli, P.' 29
+3 'Jumper, J.' 30
+3 'Hassabis, D.' 31
+#
+#
+loop_
+_software.pdbx_ordinal
+_software.name
+_software.classification
+_software.description
+_software.version
+_software.type
+_software.location
+_software.citation_id
+1 ColabFold 'model building' 'Structure prediction' 1.2.0 package
+https://github.com/sokrypton/ColabFold 1
+2 MMseqs2 'data collection' 'Many-against-Many sequence searching' . package
+https://github.com/soedinglab/mmseqs2 2
+3 AlphaFold-Multimer 'model building' 'Structure prediction' . package
+https://github.com/deepmind/alphafold 3
+#
+#
+loop_
+_ma_software_parameter.parameter_id
+_ma_software_parameter.group_id
+_ma_software_parameter.data_type
+_ma_software_parameter.name
+_ma_software_parameter.value
+_ma_software_parameter.description
+1 1 boolean use_templates NO .
+2 1 boolean use_amber NO .
+3 1 string msa_mode 'MMseqs2 (UniRef+Environmental)' .
+4 1 string model_type AlphaFold2-multimer-v2 .
+5 1 integer num_models 5 .
+6 1 integer num_recycles 3 .
+7 1 integer-csv model_order 3,4,5,1,2 .
+8 1 boolean keep_existing_results YES .
+9 1 string rank_by multimer .
+10 1 string pair_mode unpaired+paired .
+11 1 string host_url https://api.colabfold.com .
+12 1 integer 'stop_at_score' 100 .
+13 1 float recompile_padding 1.100 .
+14 1 boolean recompile_all_models YES .
+15 1 string commit b532e910b15434f707f0b7460abc25c70fcb9b26 .
+16 1 string version 1.2.0 .
+#
+#
+loop_
+_ma_software_group.ordinal_id
+_ma_software_group.group_id
+_ma_software_group.software_id
+_ma_software_group.parameter_group_id
+1 1 1 1
+2 1 2 1
+3 1 3 1
+#
+#
+loop_
+_audit_author.name
+_audit_author.pdbx_ordinal
+'Bartolec, T.K.' 1
+'Vazquez-Campos, X.' 2
+'Norman, A.' 3
+'Luong, C.' 4
+'Payne, R.J.' 5
+'Wilkins, M.R.' 6
+'Mackay, J.P.' 7
+'Low, J.K.K.' 8
+#
+#
+loop_
+_chem_comp.id
+_chem_comp.type
+_chem_comp.name
+_chem_comp.formula
+_chem_comp.formula_weight
+_chem_comp.ma_provenance
+ALA 'L-peptide linking' ALANINE 'C3 H7 N O2' 89.094 'CCD Core'
+ARG 'L-peptide linking' ARGININE 'C6 H15 N4 O2 1' 175.212 'CCD Core'
+ASN 'L-peptide linking' ASPARAGINE 'C4 H8 N2 O3' 132.119 'CCD Core'
+ASP 'L-peptide linking' 'ASPARTIC ACID' 'C4 H7 N O4' 133.103 'CCD Core'
+CYS 'L-peptide linking' CYSTEINE 'C3 H7 N O2 S' 121.154 'CCD Core'
+GLN 'L-peptide linking' GLUTAMINE 'C5 H10 N2 O3' 146.146 'CCD Core'
+GLU 'L-peptide linking' 'GLUTAMIC ACID' 'C5 H9 N O4' 147.130 'CCD Core'
+GLY 'peptide linking' GLYCINE 'C2 H5 N O2' 75.067 'CCD Core'
+HIS 'L-peptide linking' HISTIDINE 'C6 H10 N3 O2 1' 156.165 'CCD Core'
+ILE 'L-peptide linking' ISOLEUCINE 'C6 H13 N O2' 131.175 'CCD Core'
+LEU 'L-peptide linking' LEUCINE 'C6 H13 N O2' 131.175 'CCD Core'
+LYS 'L-peptide linking' LYSINE 'C6 H15 N2 O2 1' 147.198 'CCD Core'
+MET 'L-peptide linking' METHIONINE 'C5 H11 N O2 S' 149.208 'CCD Core'
+PHE 'L-peptide linking' PHENYLALANINE 'C9 H11 N O2' 165.192 'CCD Core'
+PRO 'L-peptide linking' PROLINE 'C5 H9 N O2' 115.132 'CCD Core'
+SER 'L-peptide linking' SERINE 'C3 H7 N O3' 105.093 'CCD Core'
+THR 'L-peptide linking' THREONINE 'C4 H9 N O3' 119.120 'CCD Core'
+TRP 'L-peptide linking' TRYPTOPHAN 'C11 H12 N2 O2' 204.229 'CCD Core'
+TYR 'L-peptide linking' TYROSINE 'C9 H11 N O3' 181.191 'CCD Core'
+VAL 'L-peptide linking' VALINE 'C5 H11 N O2' 117.148 'CCD Core'
+#
+#
+loop_
+_entity.id
+_entity.type
+_entity.src_method
+_entity.pdbx_description
+_entity.formula_weight
+_entity.pdbx_number_of_molecules
+_entity.details
+1 polymer nat 'Homo sapiens (Human) TIMM8B (Q9Y5J9)' 10831.880 1 .
+2 polymer nat 'Homo sapiens (Human) TIMM13 (Q9Y5L4)' 12206.562 1 .
+#
+#
+loop_
+_entity_src_nat.entity_id
+_entity_src_nat.pdbx_src_id
+_entity_src_nat.pdbx_ncbi_taxonomy_id
+_entity_src_nat.pdbx_organism_scientific
+_entity_src_nat.common_name
+_entity_src_nat.strain
+1 1 9606 'Homo sapiens (Human)' . .
+2 1 9606 'Homo sapiens (Human)' . .
+#
+#
+loop_
+_ma_target_ref_db_details.target_entity_id
+_ma_target_ref_db_details.db_name
+_ma_target_ref_db_details.db_name_other_details
+_ma_target_ref_db_details.db_code
+_ma_target_ref_db_details.db_accession
+_ma_target_ref_db_details.seq_db_isoform
+_ma_target_ref_db_details.seq_db_align_begin
+_ma_target_ref_db_details.seq_db_align_end
+_ma_target_ref_db_details.ncbi_taxonomy_id
+_ma_target_ref_db_details.organism_scientific
+_ma_target_ref_db_details.seq_db_sequence_version_date
+_ma_target_ref_db_details.seq_db_sequence_checksum
+1 UNP . TIM8B_HUMAN Q9Y5J9 . 1 83 9606 'Homo sapiens (Human)' 1999-11-01
+9DC47BB475DB8692
+2 UNP . TIM13_HUMAN Q9Y5L4 . 1 95 9606 'Homo sapiens (Human)' 1999-11-01
+E40E742C7CA55834
+#
+#
+loop_
+_entity_poly.entity_id
+_entity_poly.pdbx_seq_one_letter_code
+_entity_poly.pdbx_seq_one_letter_code_can
+1 MAE MAE
+2 MEG MEG
+#
+#
+loop_
+_entity_poly_seq.num
+_entity_poly_seq.mon_id
+_entity_poly_seq.hetero
+1 MET .
+2 ALA .
+3 GLU .
+1 MET .
+2 GLU .
+3 GLY .
+#
+#
+loop_
+_struct_asym.id
+_struct_asym.entity_id
+_struct_asym.details
+A 1 .
+B 2 .
+#
+#
+loop_
+_pdbx_poly_seq_scheme.asym_id
+_pdbx_poly_seq_scheme.seq_id
+_pdbx_poly_seq_scheme.mon_id
+_pdbx_poly_seq_scheme.pdb_seq_num
+_pdbx_poly_seq_scheme.auth_seq_num
+_pdbx_poly_seq_scheme.pdb_mon_id
+_pdbx_poly_seq_scheme.auth_mon_id
+_pdbx_poly_seq_scheme.pdb_strand_id
+_pdbx_poly_seq_scheme.pdb_ins_code
+A 1 MET 1 1 MET MET A .
+A 2 ALA 2 2 ALA ALA A .
+A 3 GLU 3 3 GLU GLU A .
+B 1 MET 1 1 MET MET B .
+B 2 GLU 2 2 GLU GLU B .
+B 3 GLY 3 3 GLY GLY B .
+#
+#
+loop_
+_ma_data.id
+_ma_data.name
+_ma_data.content_type
+_ma_data.content_type_other_details
+1 'Homo sapiens (Human) TIMM8B (Q9Y5J9)' target .
+2 'Homo sapiens (Human) TIMM13 (Q9Y5L4)' target .
+3 'Model 5 (top ranked model)' 'model coordinates' .
+4 UniRef30 'reference database' .
+5 'ColabFold DB' 'reference database' .
+#
+#
+loop_
+_ma_data_group.ordinal_id
+_ma_data_group.group_id
+_ma_data_group.data_id
+1 1 1
+2 1 2
+3 1 4
+4 1 5
+5 2 3
+#
+#
+loop_
+_ma_data_ref_db.data_id
+_ma_data_ref_db.name
+_ma_data_ref_db.location_url
+_ma_data_ref_db.version
+_ma_data_ref_db.release_date
+4 UniRef30 http://wwwuser.gwdg.de/~compbiol/colabfold/uniref30_2103.tar.gz
+2021_03 .
+5 'ColabFold DB'
+http://wwwuser.gwdg.de/~compbiol/colabfold/colabfold_envdb_202108.tar.gz 2021_08
+.
+#
+#
+loop_
+_ma_target_entity.entity_id
+_ma_target_entity.data_id
+_ma_target_entity.origin
+1 1 'reference database'
+2 2 'reference database'
+#
+#
+loop_
+_ma_target_entity_instance.asym_id
+_ma_target_entity_instance.entity_id
+_ma_target_entity_instance.details
+A 1 .
+B 2 .
+#
+#
+loop_
+_ma_protocol_step.ordinal_id
+_ma_protocol_step.protocol_id
+_ma_protocol_step.step_id
+_ma_protocol_step.method_type
+_ma_protocol_step.step_name
+_ma_protocol_step.details
+_ma_protocol_step.software_group_id
+_ma_protocol_step.input_data_group_id
+_ma_protocol_step.output_data_group_id
+1 1 1 modeling .
+'Model generated using ColabFold v1.2.0 with AlphaFold-Multimer (v2) producing 5 models with 3 recycles each, without model relaxation, without templates, ranked by ipTM*0.8+pTM*0.2, starting from paired and unpaired MSAs from MMseqs2 (UniRef+Environmental).'
+1 1 2
+2 1 2 'model selection' .
+'Select best model, which is either the top-ranked model as determined by the ColabFold pipeline (ipTM*0.8+pTM*0.2), or else the model with best congruence with crosslinks reported in the related study.'
+. 2 2
+#
+#
+loop_
+_ma_model_list.ordinal_id
+_ma_model_list.model_id
+_ma_model_list.model_group_id
+_ma_model_list.model_name
+_ma_model_list.model_group_name
+_ma_model_list.data_id
+_ma_model_list.model_type
+_ma_model_list.model_type_other_details
+1 1 1 'Model 5 (top ranked model)'
+'Crosslinked Heterodimer AlphaFold-Multimer v2 Models' 3 'Ab initio model' .
+#
+#
+loop_
+_atom_site.group_PDB
+_atom_site.id
+_atom_site.type_symbol
+_atom_site.label_atom_id
+_atom_site.label_alt_id
+_atom_site.label_comp_id
+_atom_site.label_seq_id
+_atom_site.auth_seq_id
+_atom_site.pdbx_PDB_ins_code
+_atom_site.label_asym_id
+_atom_site.Cartn_x
+_atom_site.Cartn_y
+_atom_site.Cartn_z
+_atom_site.occupancy
+_atom_site.auth_asym_id
+_atom_site.B_iso_or_equiv
+_atom_site.pdbx_PDB_model_num
+ATOM 1 N N . MET 1 1 ? A 8.317 39.011 19.688 1.000 A 42.340 1
+ATOM 2 C CA . MET 1 1 ? A 8.849 37.725 19.245 1.000 A 42.340 1
+ATOM 3 C C . MET 1 1 ? A 7.739 36.684 19.142 1.000 A 42.340 1
+ATOM 4 O O . MET 1 1 ? A 7.973 35.565 18.682 1.000 A 42.340 1
+ATOM 5 C CB . MET 1 1 ? A 9.938 37.236 20.200 1.000 A 42.340 1
+ATOM 6 C CG . MET 1 1 ? A 11.341 37.665 19.802 1.000 A 42.340 1
+ATOM 7 S SD . MET 1 1 ? A 12.633 36.531 20.445 1.000 A 42.340 1
+ATOM 8 C CE . MET 1 1 ? A 13.720 37.723 21.276 1.000 A 42.340 1
+ATOM 9 N N . ALA 2 2 ? A 6.663 36.923 19.908 1.000 A 50.210 1
+ATOM 10 C CA . ALA 2 2 ? A 5.472 36.082 19.989 1.000 A 50.210 1
+ATOM 11 C C . ALA 2 2 ? A 4.632 36.197 18.719 1.000 A 50.210 1
+ATOM 12 O O . ALA 2 2 ? A 3.979 35.234 18.311 1.000 A 50.210 1
+ATOM 13 C CB . ALA 2 2 ? A 4.637 36.457 21.211 1.000 A 50.210 1
+ATOM 14 N N . GLU 3 3 ? A 4.548 37.401 18.095 1.000 A 53.120 1
+ATOM 15 C CA . GLU 3 3 ? A 3.660 37.590 16.952 1.000 A 53.120 1
+ATOM 16 C C . GLU 3 3 ? A 4.168 36.832 15.728 1.000 A 53.120 1
+ATOM 17 O O . GLU 3 3 ? A 3.379 36.423 14.874 1.000 A 53.120 1
+ATOM 18 C CB . GLU 3 3 ? A 3.513 39.078 16.625 1.000 A 53.120 1
+ATOM 19 C CG . GLU 3 3 ? A 2.318 39.739 17.296 1.000 A 53.120 1
+ATOM 20 C CD . GLU 3 3 ? A 2.060 41.155 16.803 1.000 A 53.120 1
+ATOM 21 O OE1 . GLU 3 3 ? A 1.079 41.369 16.056 1.000 A 53.120 1
+ATOM 22 O OE2 . GLU 3 3 ? A 2.848 42.057 17.167 1.000 A 53.120 1
+ATOM 652 N N . MET 1 1 ? B 50.040 32.393 35.390 1.000 B 28.570 1
+ATOM 653 C CA . MET 1 1 ? B 49.521 31.790 36.614 1.000 B 28.570 1
+ATOM 654 C C . MET 1 1 ? B 48.376 32.619 37.186 1.000 B 28.570 1
+ATOM 655 O O . MET 1 1 ? B 47.433 32.071 37.759 1.000 B 28.570 1
+ATOM 656 C CB . MET 1 1 ? B 50.632 31.645 37.655 1.000 B 28.570 1
+ATOM 657 C CG . MET 1 1 ? B 50.733 30.251 38.253 1.000 B 28.570 1
+ATOM 658 S SD . MET 1 1 ? B 52.198 30.058 39.341 1.000 B 28.570 1
+ATOM 659 C CE . MET 1 1 ? B 51.684 28.617 40.317 1.000 B 28.570 1
+ATOM 660 N N . GLU 2 2 ? B 48.540 33.870 37.053 1.000 B 35.420 1
+ATOM 661 C CA . GLU 2 2 ? B 47.501 34.894 37.106 1.000 B 35.420 1
+ATOM 662 C C . GLU 2 2 ? B 46.554 34.783 35.915 1.000 B 35.420 1
+ATOM 663 O O . GLU 2 2 ? B 45.932 35.769 35.515 1.000 B 35.420 1
+ATOM 664 C CB . GLU 2 2 ? B 48.124 36.291 37.154 1.000 B 35.420 1
+ATOM 665 C CG . GLU 2 2 ? B 47.783 37.074 38.414 1.000 B 35.420 1
+ATOM 666 C CD . GLU 2 2 ? B 48.552 38.380 38.535 1.000 B 35.420 1
+ATOM 667 O OE1 . GLU 2 2 ? B 47.992 39.448 38.199 1.000 B 35.420 1
+ATOM 668 O OE2 . GLU 2 2 ? B 49.725 38.335 38.969 1.000 B 35.420 1
+ATOM 669 N N . GLY 3 3 ? B 46.387 33.521 35.322 1.000 B 37.540 1
+ATOM 670 C CA . GLY 3 3 ? B 45.732 33.310 34.041 1.000 B 37.540 1
+ATOM 671 C C . GLY 3 3 ? B 44.283 33.761 34.030 1.000 B 37.540 1
+ATOM 672 O O . GLY 3 3 ? B 43.519 33.433 34.939 1.000 B 37.540 1
+#
+#
+loop_
+_atom_type.symbol
+C
+N
+O
+S
+#
diff --git a/validation/validate-mmcif-file.py b/validation/validate-mmcif-file.py
index e117c44778782b94154b6fd281c122d1e4d9fb04..a23472a97008620806600fe2f2749756f65b3637 100755
--- a/validation/validate-mmcif-file.py
+++ b/validation/validate-mmcif-file.py
@@ -776,7 +776,9 @@ class _CifCheck:
             # missing items
             for pttrn in [
                 r"^ERROR - In block \"(?P<dblock>.*)\", mandatory "
-                + r"item \"(?P<itm>.*)\" is not in category \"(?P<cat>.*)\"$"
+                + r"item \"(?P<itm>.*)\" is not in category \"(?P<cat>.*)\"$",
+                r"ERROR - In block \"(?P<dblock>.*)\", key item "
+                + r"\"(?P<itm>.*)\" not found in category \"(?P<cat>.*)\"$",
             ]:
                 match = re.match(pttrn, line)
                 if match is not None: