diff --git a/backend/metagenedb/api/catalog/urls.py b/backend/metagenedb/api/catalog/urls.py
index da5e3c9d53c9173f1c3cbc05769a804ed26ebabe..b635181a54a231f6678819ff70e2ecf9f786bdc9 100644
--- a/backend/metagenedb/api/catalog/urls.py
+++ b/backend/metagenedb/api/catalog/urls.py
@@ -5,9 +5,9 @@ from metagenedb.api.catalog.views import FunctionViewSet, GeneViewSet, TaxonomyV
 
 
 api_router = DefaultRouter()
-api_router.register(r'functions', FunctionViewSet, base_name='functions')
-api_router.register(r'genes', GeneViewSet, base_name='genes')
-api_router.register(r'taxonomy', TaxonomyViewSet, base_name='taxonomy')
+api_router.register(r'functions', FunctionViewSet, basename='functions')
+api_router.register(r'genes', GeneViewSet, basename='genes')
+api_router.register(r'taxonomy', TaxonomyViewSet, basename='taxonomy')
 
 
 urlpatterns = [
diff --git a/backend/metagenedb/apps/catalog/migrations/0009_meta_taxonomy.py b/backend/metagenedb/apps/catalog/migrations/0009_meta_taxonomy_functions.py
similarity index 65%
rename from backend/metagenedb/apps/catalog/migrations/0009_meta_taxonomy.py
rename to backend/metagenedb/apps/catalog/migrations/0009_meta_taxonomy_functions.py
index 88c90acbbd1cf484fcaec085a01c5ec7df0b63b7..68adb09c1699a6cf4ef2562ff387aea72b8027df 100644
--- a/backend/metagenedb/apps/catalog/migrations/0009_meta_taxonomy.py
+++ b/backend/metagenedb/apps/catalog/migrations/0009_meta_taxonomy_functions.py
@@ -1,4 +1,4 @@
-# Generated by Django 2.2.4 on 2019-08-27 11:05
+# Generated by Django 2.2.4 on 2019-08-29 09:23
 
 from django.db import migrations
 
@@ -10,6 +10,10 @@ class Migration(migrations.Migration):
     ]
 
     operations = [
+        migrations.AlterModelOptions(
+            name='function',
+            options={'ordering': ['-function_id']},
+        ),
         migrations.AlterModelOptions(
             name='taxonomy',
             options={'ordering': ['-tax_id'], 'verbose_name_plural': 'Taxonomy'},
diff --git a/backend/metagenedb/apps/catalog/models/function.py b/backend/metagenedb/apps/catalog/models/function.py
index de43a73e7ea48f1a7daad50560b70586c628a1fa..634f54d047553c743a09c8f5a4428ab46b6aae5b 100644
--- a/backend/metagenedb/apps/catalog/models/function.py
+++ b/backend/metagenedb/apps/catalog/models/function.py
@@ -18,6 +18,9 @@ class Function(models.Model):
     def __str__(self):
         return self.function_id
 
+    class Meta:
+        ordering = ['-function_id']
+
 
 class KeggOrthology(Function):
     SOURCE = 'kegg'
diff --git a/backend/metagenedb/apps/catalog/serializers/bulk_list.py b/backend/metagenedb/apps/catalog/serializers/bulk_list.py
index 4643630a465257be6f9e43e12fc5805fa147d5a7..ccbb73b181ee0dbb6ec8a96ade66b2bd6bb209a5 100644
--- a/backend/metagenedb/apps/catalog/serializers/bulk_list.py
+++ b/backend/metagenedb/apps/catalog/serializers/bulk_list.py
@@ -1,5 +1,5 @@
 from rest_framework import serializers
-from rest_framework.utils import model_meta
+from rest_framework.utils import model_meta  # noqa
 
 
 class BulkListSerializer(serializers.ListSerializer):
diff --git a/backend/metagenedb/apps/catalog/serializers/test_bulk_list.py b/backend/metagenedb/apps/catalog/serializers/test_bulk_list.py
index 9c39a1ac8b1ca19fea683fe9796b5449e2317fbf..12b331853dfa05ba4d2cbf2fb4094465fa9103c4 100644
--- a/backend/metagenedb/apps/catalog/serializers/test_bulk_list.py
+++ b/backend/metagenedb/apps/catalog/serializers/test_bulk_list.py
@@ -2,6 +2,10 @@ from copy import deepcopy
 from unittest import TestCase
 from unittest.mock import Mock
 
+from rest_framework.test import APITestCase
+
+from metagenedb.common.utils.mocks.metagenedb import MetageneDBCatalogFunctionAPIMock
+from metagenedb.apps.catalog.serializers import FunctionSerializer
 from metagenedb.apps.catalog.serializers.bulk_list import BulkListSerializer
 
 
@@ -51,3 +55,31 @@ class TestExtractManyToMany(TestCase):
         tested_list = self.bulk_list_serializer._extract_many_to_many(self.data, self.info)
         self.assertListEqual(tested_list, expected_list)
         self.assertListEqual(ori_list, self.data)
+
+
+class TestCreateBulk(APITestCase):
+    """
+    We are going to use an Serializer based on a real model since there are interactions with the DB.
+    We are using the FunctionListSerializer for the moment (through FunctionSerializer(many=True)).
+    """
+
+    def setUp(self):
+        self.function_api = MetageneDBCatalogFunctionAPIMock(self.client)
+
+    def test_create_functions(self):
+        validated_data = [
+            {
+                "function_id": "k_test1",
+                "source": "kegg",
+                "name": "Kegg Test 1"
+            },
+            {
+                "function_id": "k_test2",
+                "source": "kegg",
+                "name": "Kegg Test 2"
+            }
+        ]
+        serializer = FunctionSerializer(many=True)
+        tested_instances = serializer.create(validated_data)
+        self.assertEqual(self.function_api.get_all()['count'], 2)
+        self.assertEqual(len(tested_instances), len(validated_data))
diff --git a/backend/metagenedb/common/utils/mocks/metagenedb.py b/backend/metagenedb/common/utils/mocks/metagenedb.py
index d9fbaed3b9173ba30f956ebd3aad4bba24b60dff..d4a84f42a8d23e15238596a0813b1518d3ac9dd5 100644
--- a/backend/metagenedb/common/utils/mocks/metagenedb.py
+++ b/backend/metagenedb/common/utils/mocks/metagenedb.py
@@ -51,3 +51,8 @@ class MetageneDBCatalogGeneAPIMock(MetageneDBAPIMock):
 class MetageneDBCatalogTaxonomyAPIMock(MetageneDBAPIMock):
     KEY_ID = 'gene_id'
     REVERSE_PATH = 'catalog:v1:taxonomy'
+
+
+class MetageneDBCatalogFunctionAPIMock(MetageneDBAPIMock):
+    KEY_ID = 'function_id'
+    REVERSE_PATH = 'catalog:v1:functions'