diff --git a/aleksis/apps/fibu/migrations/0001_initial.py b/aleksis/apps/fibu/migrations/0001_initial.py
index b29452c6fc930108f682dd56af92dc1b58558b89..0c54744320b99e00008debcc5bfaae2f4f8a6740 100644
--- a/aleksis/apps/fibu/migrations/0001_initial.py
+++ b/aleksis/apps/fibu/migrations/0001_initial.py
@@ -1,10 +1,12 @@
-# Generated by Django 3.0.5 on 2020-04-13 12:56
+# Generated by Django 3.0.8 on 2020-08-04 14:31
 
 import datetime
-
-import django.db.models.deletion
 from django.conf import settings
+import django.contrib.postgres.fields.jsonb
+import django.contrib.sites.managers
 from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
 
 
 class Migration(migrations.Migration):
@@ -12,6 +14,7 @@ class Migration(migrations.Migration):
     initial = True
 
     dependencies = [
+        ('sites', '0002_alter_domain_unique'),
         migrations.swappable_dependency(settings.AUTH_USER_MODEL),
     ]
 
@@ -20,6 +23,7 @@ class Migration(migrations.Migration):
             name='Account',
             fields=[
                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)),
                 ('name', models.CharField(max_length=20, verbose_name='Booking account')),
                 ('income', models.BooleanField(default=False, verbose_name='Income account')),
                 ('budget', models.IntegerField(default=0, verbose_name='Budget')),
@@ -31,49 +35,67 @@ class Migration(migrations.Migration):
                 'verbose_name_plural': 'Booking accounts',
                 'permissions': [('manage_account', 'Can manage account')],
             },
+            managers=[
+                ('objects', django.contrib.sites.managers.CurrentSiteManager()),
+            ],
         ),
         migrations.CreateModel(
             name='CostCenter',
             fields=[
                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)),
                 ('name', models.CharField(max_length=30, verbose_name='Cost center')),
                 ('year', models.IntegerField(choices=[(2020, '2020'), (2021, '2021'), (2022, '2022'), (2023, '2023')], default=2020, verbose_name='Year')),
+                ('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
             ],
             options={
                 'verbose_name': 'Cost center',
                 'verbose_name_plural': 'Cost centers',
                 'permissions': [('manage_costcenter', 'Can manage costcenter')],
             },
+            managers=[
+                ('objects', django.contrib.sites.managers.CurrentSiteManager()),
+            ],
         ),
         migrations.CreateModel(
             name='Booking',
             fields=[
                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)),
                 ('description', models.CharField(max_length=50, verbose_name='Description')),
-                ('justification', models.CharField(blank=True, max_length=2000, null=True, verbose_name='Reason')),
+                ('justification', models.CharField(blank=True, default='', max_length=2000, verbose_name='Reason')),
                 ('planned_amount', models.IntegerField(verbose_name='Planned amount')),
-                ('invoice_date', models.DateField(blank=True, null=True, verbose_name='Date of invoice')),
-                ('invoice_number', models.CharField(blank=True, max_length=20, null=True, verbose_name='Bill number')),
-                ('firma', models.CharField(blank=True, max_length=30, null=True, verbose_name='Company')),
+                ('invoice_date', models.DateField(blank=True, default=django.utils.timezone.now, verbose_name='Date of invoice')),
+                ('invoice_number', models.CharField(blank=True, default='0', max_length=20, verbose_name='Bill number')),
+                ('firma', models.CharField(blank=True, default='', max_length=30, verbose_name='Company')),
                 ('amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=9, verbose_name='Amount')),
                 ('payout_number', models.IntegerField(blank=True, null=True, verbose_name='Payout number')),
                 ('submission_date', models.DateField(blank=True, null=True, verbose_name='Submission date')),
                 ('booking_date', models.DateField(default=datetime.date.today, verbose_name='Booking date')),
                 ('maturity', models.DateField(blank=True, null=True, verbose_name='Maturity')),
-                ('upload', models.FileField(blank=True, default=None, null=True, upload_to='uploads/fibu/%Y/', verbose_name='Scan of invoice')),
+                ('upload', models.FileField(blank=True, default=None, upload_to='uploads/fibu/%Y/', verbose_name='Scan of invoice')),
                 ('status', models.IntegerField(choices=[(0, 'requested'), (1, 'rejected'), (2, 'accepted'), (3, 'ordered'), (4, 'submitted'), (5, 'paid')], default=0, verbose_name='Status')),
                 ('account', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='fibu.Account', verbose_name='Booking account')),
                 ('contact', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='bookings', to=settings.AUTH_USER_MODEL, verbose_name='Created by')),
+                ('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
             ],
             options={
                 'verbose_name': 'Booking',
                 'verbose_name_plural': 'Bookings',
                 'permissions': [('manage_booking', 'Can manage bookings'), ('request_booking', 'Can request a booking'), ('check_booking', 'Can check bookings')],
             },
+            managers=[
+                ('objects', django.contrib.sites.managers.CurrentSiteManager()),
+            ],
         ),
         migrations.AddField(
             model_name='account',
             name='cost_center',
             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fibu.CostCenter', verbose_name='Cost center'),
         ),
+        migrations.AddField(
+            model_name='account',
+            name='site',
+            field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site'),
+        ),
     ]
diff --git a/aleksis/apps/fibu/models.py b/aleksis/apps/fibu/models.py
index 64625e27a6b6d543e99c54b5d5ec62ba761f58fd..0736d681e25341727c79cb31283649c6482d46b7 100644
--- a/aleksis/apps/fibu/models.py
+++ b/aleksis/apps/fibu/models.py
@@ -5,6 +5,8 @@ from django.db import models
 from django.utils import timezone
 from django.utils.translation import ugettext_lazy as _
 
+from aleksis.core.mixins import ExtensibleModel
+
 current_year = timezone.now().year
 YEARS = [(x, str(x)) for x in range(current_year, current_year + 4)]
 
@@ -30,7 +32,7 @@ status_list = [
 status_choices = [(x, val.name) for x, val in enumerate(status_list)]
 
 
-class CostCenter(models.Model):
+class CostCenter(ExtensibleModel):
     name = models.CharField(max_length=30, blank=False, verbose_name=_("Cost center"))
     year = models.IntegerField(
         default=timezone.now().year, choices=YEARS, blank=False, verbose_name=_("Year")
@@ -47,7 +49,7 @@ class CostCenter(models.Model):
         return self.name
 
 
-class Account(models.Model):
+class Account(ExtensibleModel):
     name = models.CharField(max_length=20, blank=False, verbose_name=_("Booking account"))
     cost_center = models.ForeignKey(
         to=CostCenter, on_delete=models.CASCADE, blank=False, verbose_name=_("Cost center")
@@ -68,7 +70,7 @@ class Account(models.Model):
         return "{}: {}".format(self.cost_center, self.name)
 
 
-class Booking(models.Model):
+class Booking(ExtensibleModel):
     # General information
     account = models.ForeignKey(
         to=Account,
@@ -86,13 +88,13 @@ class Booking(models.Model):
         null=True,
     )
     description = models.CharField(max_length=50, verbose_name=_("Description"))
-    justification = models.CharField(max_length=2000, blank=True, verbose_name=_("Reason"))
+    justification = models.CharField(default="", max_length=2000, blank=True, verbose_name=_("Reason"))
     planned_amount = models.IntegerField(verbose_name=_("Planned amount"))
 
     # Details
-    invoice_date = models.DateField(blank=True, verbose_name=_("Date of invoice"))
-    invoice_number = models.CharField(max_length=20, blank=True, verbose_name=_("Bill number"))
-    firma = models.CharField(max_length=30, blank=True, verbose_name=_("Company"))
+    invoice_date = models.DateField(default=timezone.now, blank=True, verbose_name=_("Date of invoice"))
+    invoice_number = models.CharField(default="0", max_length=20, blank=True, verbose_name=_("Bill number"))
+    firma = models.CharField(default="", max_length=30, blank=True, verbose_name=_("Company"))
     amount = models.DecimalField(
         max_digits=9, decimal_places=2, default=0.00, verbose_name=_("Amount")
     )