diff --git a/compendium_v2/db/model.py b/compendium_v2/db/model.py
index 5c14487bb21992a136ab8fb804d46e6533af9440..1cc54238c5c108206fbf4edbca2f30f9eef85131 100644
--- a/compendium_v2/db/model.py
+++ b/compendium_v2/db/model.py
@@ -21,7 +21,7 @@ def _enum_names(enum_class):
 
 class BudgetEntry(base_schema):
     __tablename__ = 'budgets'
-    id = sa.Column(sa.Integer, autoincrement=True)
+    id = sa.Column(sa.Sequence('budgetentry_seq_id_seq'), nullable=False)
     nren = sa.Column(sa.String(128), primary_key=True)
     budget = sa.Column(sa.String(128), nullable=True)
-    year = sa.Column(sa.String(128), primary_key=True)
+    year = sa.Column(sa.Integer, primary_key=True)
diff --git a/compendium_v2/migrations/versions/366dfd333305_initial_db_setup.py b/compendium_v2/migrations/versions/366dfd333305_initial_db_setup.py
deleted file mode 100644
index 30661f6333594e7aa63fe138e0c348a451be5e6b..0000000000000000000000000000000000000000
--- a/compendium_v2/migrations/versions/366dfd333305_initial_db_setup.py
+++ /dev/null
@@ -1,30 +0,0 @@
-"""Initial DB setup
-
-Revision ID: 366dfd333305
-Revises: 
-Create Date: 2023-02-07 11:37:56.576183
-
-"""
-from alembic import op
-import sqlalchemy as sa
-
-
-# revision identifiers, used by Alembic.
-revision = '366dfd333305'
-down_revision = None
-branch_labels = None
-depends_on = None
-
-
-def upgrade():
-    op.create_table('budgets',
-    sa.Column('id', sa.Integer(), autoincrement=True, nullable=True),
-    sa.Column('nren', sa.String(length=128), nullable=False),
-    sa.Column('budget', sa.String(length=128), nullable=True),
-    sa.Column('year', sa.String(length=128), nullable=False),
-    sa.PrimaryKeyConstraint('nren', 'year')
-    )
-
-
-def downgrade():
-    op.drop_table('budgets')
diff --git a/compendium_v2/migrations/versions/cbcd21fcc151_initial_db.py b/compendium_v2/migrations/versions/cbcd21fcc151_initial_db.py
new file mode 100644
index 0000000000000000000000000000000000000000..8ff0e48cc2f8f5c0de79a22e16aea14d46b71369
--- /dev/null
+++ b/compendium_v2/migrations/versions/cbcd21fcc151_initial_db.py
@@ -0,0 +1,36 @@
+"""Initial DB
+
+Revision ID: cbcd21fcc151
+Revises: 
+Create Date: 2023-02-07 15:56:22.086064
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'cbcd21fcc151'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+budget_id_seq = sa.Sequence('budgetentry_seq_id_seq') # represents the sequence
+
+
+
+def upgrade():
+    op.execute(sa.schema.CreateSequence(budget_id_seq)) # create the sequence
+    op.create_table('budgets',
+    sa.Column('id', sa.Integer, budget_id_seq, nullable=False, server_default=budget_id_seq.next_value()),
+    sa.Column('nren', sa.String(length=128), nullable=False),
+    sa.Column('budget', sa.String(length=128), nullable=True),
+    sa.Column('year', sa.Integer, nullable=False),
+    sa.PrimaryKeyConstraint('nren', 'year')
+    )
+
+
+def downgrade():
+    op.execute(
+      sa.schema.DropSequence(sa.Sequence('budgetentry_seq_id_seq')))
+    op.drop_table('budgets')
diff --git a/compendium_v2/routes/budget.py b/compendium_v2/routes/budget.py
index b55dd181c9a17645bf10aa0ad7bfb234dc1b6c78..7c5090ade591a0eb77736d5226bac9b8208d94bb 100644
--- a/compendium_v2/routes/budget.py
+++ b/compendium_v2/routes/budget.py
@@ -1,9 +1,11 @@
 import logging
+from collections import defaultdict
 from typing import Any
 
 from flask import Blueprint, jsonify, current_app
 
 from compendium_v2 import db, survey_db
+from compendium_v2.db import model
 from compendium_v2.survey_db import model as survey_model
 from compendium_v2.routes import common
 
@@ -19,7 +21,6 @@ def before_request():
     survey_db.init_db_model(dsn_survey)
 
 
-
 logger = logging.getLogger(__name__)
 
 col_pal = ['#fd7f6f', '#7eb0d5', '#b2e061',
@@ -61,24 +62,44 @@ def budget_view() -> Any:
 
     :return:
     """
-    try:
-        with survey_db.session_scope() as session:
-            data = session.query(survey_model.Nrens).join(survey_model.Budgets,
-                                                          survey_model.Budgets.country_code == survey_model.Nrens.country_code)
-            for nren in data:
-                print(nren)
-    except Exception as e:
-        print(e)
-
-
-    # def _extract_data(entry: model.BudgetEntry):
-    #     return {
-    #         'id': entry.id,
-    #         'NREN': entry.NREN,
-    #         'BUDGET': entry.BUDGET,
-    #         'BUDGET_YEAR': entry.BUDGET_YEAR,
-    #     }
-
-    # entries = [_extract_data(entry) for entry in data]
-    #
-    # return jsonify(entries)
+
+   
+
+    with survey_db.session_scope() as survey_session, \
+            db.session_scope() as session:
+        
+        _entries = session.query(model.BudgetEntry)
+
+        inserted = defaultdict(dict)
+
+
+        for entry in _entries:
+            inserted[entry.nren][entry.year] = entry.budget
+        
+        data = survey_session.query(survey_model.Nrens)
+        for nren in data:
+            for budget in nren.budgets:
+                abbrev = nren.abbreviation
+                year = budget.year
+
+                if inserted.get(abbrev, {}).get(year):
+                    continue
+                else:
+                    inserted[abbrev][year] = True
+                entry = model.BudgetEntry(
+                    nren=abbrev, budget=budget.budget, year=year)
+                session.add(entry)
+
+    def _extract_data(entry: model.BudgetEntry):
+        return {
+            'id': entry.id,
+            'NREN': entry.nren,
+            'BUDGET': entry.budget,
+            'BUDGET_YEAR': entry.year,
+        }
+
+    with db.session_scope() as session:
+        entries = sorted([_extract_data(entry)
+                   for entry in session.query(model.BudgetEntry)], key=lambda d: (d['BUDGET_YEAR'], d['NREN']))
+
+    return jsonify(entries)
diff --git a/compendium_v2/survey_db/model.py b/compendium_v2/survey_db/model.py
index 50605eb17439f62bd05bef88124d25751b524266..ef05e057c0c3f60480fe92bf3832d87bc69ced70 100644
--- a/compendium_v2/survey_db/model.py
+++ b/compendium_v2/survey_db/model.py
@@ -1,7 +1,6 @@
 import enum
 import logging
 import sqlalchemy as sa
-from sqlalchemy.orm import sessionmaker
 
 from typing import Any
 
@@ -23,11 +22,9 @@ class Budgets(base_schema):
     id = sa.Column(sa.Integer, primary_key=True)
     budget = sa.Column(sa.String)
     year = sa.Column(sa.Integer)
-    country_code = sa.Column(sa.String)
-    # nren = relationship(
-    #     'Nrens', foreign_keys=[country_code],
-    #     primaryjoin='Nrens.country_code == Budgets.country_code',
-    #     back_populates='budgets')
+    country_code = sa.Column('country_code', sa.String,
+                             sa.ForeignKey('nrens.country_code'))
+    nren = relationship('Nrens', back_populates='budgets')
 
 
 class Nrens(base_schema):
@@ -35,9 +32,7 @@ class Nrens(base_schema):
     id = sa.Column(sa.Integer, primary_key=True)
     abbreviation = sa.Column(sa.String)
     country_code = sa.Column(sa.String)
-    # budgets = relationship(
-    #     'Budgets', foreign_keys=[country_code],
-    #     primaryjoin='Nrens.country_code == Budgets.country_code')
+    budgets = relationship('Budgets', back_populates='nren')
 
 
 # class BudgetEntry(base_schema):