diff --git a/scipost_django/journals/migrations/0115_publication_cf_citation.py b/scipost_django/journals/migrations/0115_publication_cf_citation.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e7a60ab1ae81e1ddc969c963936c7d30a7211ab
--- /dev/null
+++ b/scipost_django/journals/migrations/0115_publication_cf_citation.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.12 on 2022-02-20 20:28
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('journals', '0114_journal_required_article_elements'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='publication',
+            name='cf_citation',
+            field=models.CharField(blank=True, max_length=1024),
+        ),
+    ]
diff --git a/scipost_django/journals/models/publication.py b/scipost_django/journals/models/publication.py
index 3a17a2891620a70f8a08c33e15896c7e3e67a585..af0fb381dacdcbf3981c7419f1d0a33122238515 100644
--- a/scipost_django/journals/models/publication.py
+++ b/scipost_django/journals/models/publication.py
@@ -167,6 +167,7 @@ class Publication(models.Model):
     )  # Needs `auto_now` as its not explicity updated anywhere?
 
     # Calculated fields
+    cf_citation = models.CharField(max_length=1024, blank=True)
     cf_author_affiliation_indices_list = ArrayField(
         ArrayField(
             models.PositiveSmallIntegerField(blank=True, null=True), default=list
@@ -361,30 +362,38 @@ class Publication(models.Model):
 
     @property
     def citation(self):
+        if self.cf_citation:
+            return self.cf_citation
+        citation = ""
         """Return Publication name in the preferred citation format."""
         if self.in_issue and self.in_issue.in_volume:
-            return "{journal} {volume}, {paper_nr} ({year})".format(
+            citation = "{journal} {volume}, {paper_nr} ({year})".format(
                 journal=self.in_issue.in_volume.in_journal.name_abbrev,
                 volume=self.in_issue.in_volume.number,
                 paper_nr=self.get_paper_nr(),
                 year=self.publication_date.strftime("%Y"),
             )
         elif self.in_issue and self.in_issue.in_journal:
-            return "{journal} {issue}, {paper_nr} ({year})".format(
+            citation = "{journal} {issue}, {paper_nr} ({year})".format(
                 journal=self.in_issue.in_journal.name_abbrev,
                 issue=self.in_issue.number,
                 paper_nr=self.get_paper_nr(),
                 year=self.publication_date.strftime("%Y"),
             )
         elif self.in_journal:
-            return "{journal} {paper_nr} ({year})".format(
+            citation = "{journal} {paper_nr} ({year})".format(
                 journal=self.in_journal.name_abbrev,
                 paper_nr=self.paper_nr,
                 year=self.publication_date.strftime("%Y"),
             )
-        return "{paper_nr} ({year})".format(
-            paper_nr=self.paper_nr, year=self.publication_date.strftime("%Y")
-        )
+        else:
+            citation = "{paper_nr} ({year})".format(
+                paper_nr=self.paper_nr, year=self.publication_date.strftime("%Y")
+            )
+        self.cf_citation = citation
+        self.save()
+        return citation
+
 
     def get_cc_license_URI(self):
         for (key, val) in CC_LICENSES_URI: