diff --git a/backend/metagenedb/apps/catalog/admin/function.py b/backend/metagenedb/apps/catalog/admin/function.py
index ac8c885a40f3c996c025dd75d731b2601372be07..080d72febb246b08e28592763c166f54faad1074 100644
--- a/backend/metagenedb/apps/catalog/admin/function.py
+++ b/backend/metagenedb/apps/catalog/admin/function.py
@@ -25,7 +25,7 @@ class EggNogAdmin(admin.ModelAdmin):
 
     def get_functional_categories(self, obj):
         if obj.functional_categories.all():
-            return ",".join([str(f) for f in obj.functional_categories.all()])
+            return ", ".join([str(f) for f in obj.functional_categories.all()])
         return '-'
     get_functional_categories.short_description = 'Functional categories'
 
diff --git a/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py b/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py
index 75a4d902d16b0a0b673613b5485c5481fb752c59..87f51ed079ead9a3fcafee717d6bd4d32ee50d55 100644
--- a/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py
+++ b/backend/metagenedb/apps/catalog/management/commands/create_update_eggnog.py
@@ -27,12 +27,11 @@ class ImportEggNog(object):
         all_categories = EggNogFunctionalCategory.objects.all()
         if not all_categories:
             raise Exception("You need to create Functional categories first.")
-        self.functional_cat = {cat.category_id: cat for cat in all_categories}
+        self.functional_cat_instances = {cat.category_id: cat for cat in all_categories}
 
-    def link_functional_category(self, eggnog_dict):
-        cat_key = eggnog_dict.get('functional_category', 'S')
-        category = self.functional_cat.get(cat_key)
-        eggnog_dict.update({'functional_category': category})
+    def add_functional_categories(self, eggnog, functional_category_keys):
+        for key in functional_category_keys:
+            eggnog.functional_categories.add(self.functional_cat_instances[key])
 
     def load_all(self, test=False):
         self._build_functional_category_dict()
@@ -40,8 +39,9 @@ class ImportEggNog(object):
         with open(self.annotation_file, "r") as file:
             for line in file:
                 eggnog_dict = self.eggnog_parser.get_dict(line)
-                self.link_functional_category(eggnog_dict)
+                functional_category_keys = eggnog_dict.pop('functional_categories')  # link later
                 payload = {k: v for k, v in eggnog_dict.items() if v != ""}
+                eggnog = None
                 try:
                     eggnog = EggNog(**payload)
                     eggnog.full_clean()
@@ -66,6 +66,9 @@ class ImportEggNog(object):
                         self.skipped_errors.append(validation_error)
                         self.skipped_ids.append(payload.get('function_id'))
                         self.skipped_count += 1
+                if eggnog is not None:
+                    self.add_functional_categories(eggnog, functional_category_keys)
+                    eggnog.save()
                 self.processed_count += 1
                 if self.processed_count % 1000 == 0:
                     logger.info("%s/%s EggNog processed so far...", self.processed_count, self.total_eggnog_nb)
diff --git a/backend/metagenedb/common/utils/parsers/eggnog.py b/backend/metagenedb/common/utils/parsers/eggnog.py
index 31567b59d132393479cf971af1e95523344277a6..fed18047d56feacd132569f22d2c05cb4bb0d3d8 100644
--- a/backend/metagenedb/common/utils/parsers/eggnog.py
+++ b/backend/metagenedb/common/utils/parsers/eggnog.py
@@ -13,7 +13,7 @@ class EggNogAnnotationLineParser(object):
         try:
             elements = line.split('\t')
             return {
-                'functional_category': list(elements[2]),
+                'functional_categories': list(elements[2]),
                 'function_id': elements[1],
                 'name': elements[3].rstrip().split('.')[0],
             }
diff --git a/backend/metagenedb/common/utils/parsers/test_eggnog.py b/backend/metagenedb/common/utils/parsers/test_eggnog.py
index 5c5d5c98b57b6d772237022ad655555713b5c10c..d7c8e62c183daee5cd8fd58b86a0008d32c57c9a 100644
--- a/backend/metagenedb/common/utils/parsers/test_eggnog.py
+++ b/backend/metagenedb/common/utils/parsers/test_eggnog.py
@@ -10,7 +10,7 @@ class TestEggNogAnnotationLineParser(TestCase):
         expected_dict = {
                 'function_id': "28H54",
                 'name': "translational termination",
-                'functional_category': ["K"]
+                'functional_categories': ["K"]
             }
         test_dict = EggNogAnnotationLineParser.get_dict(ko_line)
         self.assertDictEqual(test_dict, expected_dict)
@@ -20,7 +20,7 @@ class TestEggNogAnnotationLineParser(TestCase):
         expected_dict = {
                 'function_id': "28H50",
                 'name': "",
-                'functional_category': ["S"]
+                'functional_categories': ["S"]
             }
         test_dict = EggNogAnnotationLineParser.get_dict(ko_line)
         self.assertDictEqual(test_dict, expected_dict)
@@ -30,7 +30,7 @@ class TestEggNogAnnotationLineParser(TestCase):
         expected_dict = {
                 'function_id': "28H50",
                 'name': "Glucose-responsive transcription factor that regulates expression of several glucose transporter (HXT) genes in response to glucose",  # noqa
-                'functional_category': ["S"]
+                'functional_categories': ["S"]
             }
         test_dict = EggNogAnnotationLineParser.get_dict(ko_line)
         self.assertDictEqual(test_dict, expected_dict)
@@ -40,7 +40,7 @@ class TestEggNogAnnotationLineParser(TestCase):
         expected_dict = {
                 'function_id': "28H54",
                 'name': "translational termination",
-                'functional_category': ["K", "S"]
+                'functional_categories': ["K", "S"]
             }
         test_dict = EggNogAnnotationLineParser.get_dict(ko_line)
         self.assertDictEqual(test_dict, expected_dict)
diff --git a/backend/scripts/populate_db/import_igc_data.py b/backend/scripts/populate_db/import_igc_data.py
index 3ee7450503b117888a2e08323935dc6628bd7290..a687342243569f4f877640b9e2bd3d1c0f2a6d53 100755
--- a/backend/scripts/populate_db/import_igc_data.py
+++ b/backend/scripts/populate_db/import_igc_data.py
@@ -5,7 +5,13 @@ import os
 import sys
 from itertools import islice
 
-from bioapi import MetageneDBCatalogFunctionAPI, MetageneDBCatalogGeneAPI, MetageneDBCatalogTaxonomyAPI
+from bioapi import (
+    MetageneDBCatalogFunctionAPI,
+    MetageneDBCatalogGeneAPI,
+    MetageneDBCatalogTaxonomyAPI,
+    MetageneDBCatalogKeggOrthologyAPI,
+    MetageneDBCatalogEggNogAPI
+)
 from requests.exceptions import HTTPError
 from slugify import slugify
 
@@ -19,6 +25,8 @@ class ImportIGCGenes(object):
     METAGENEDB_GENE_API = MetageneDBCatalogGeneAPI
     METAGENEDB_TAXONOMY_API = MetageneDBCatalogTaxonomyAPI
     METAGENEDB_FUNCTION_API = MetageneDBCatalogFunctionAPI
+    METAGENEDB_KEGG_API = MetageneDBCatalogKeggOrthologyAPI
+    METAGENEDB_EGGNOG_API = MetageneDBCatalogEggNogAPI
 
     PHYLUM_COL = 'taxo_phylum'
     GENUS_COL = 'taxo_genus'