diff --git a/compensation/forms/compensation.py b/compensation/forms/compensation.py
index cc3fa57b..bb1532d6 100644
--- a/compensation/forms/compensation.py
+++ b/compensation/forms/compensation.py
@@ -213,7 +213,6 @@ class EditCompensationForm(NewCompensationForm):
             action = UserActionLogEntry.get_edited_action(user)
 
             # Fetch data from cleaned POST values
-            identifier = self.cleaned_data.get("identifier", None)
             title = self.cleaned_data.get("title", None)
             intervention = self.cleaned_data.get("intervention", None)
             is_cef = self.cleaned_data.get("is_cef", None)
@@ -221,7 +220,6 @@ class EditCompensationForm(NewCompensationForm):
             is_pik = self.cleaned_data.get("is_pik", None)
             comment = self.cleaned_data.get("comment", None)
 
-            self.instance.identifier = identifier
             self.instance.title = title
             self.instance.intervention = intervention
             self.instance.is_cef = is_cef
diff --git a/compensation/forms/eco_account.py b/compensation/forms/eco_account.py
index 0352383c..42443025 100644
--- a/compensation/forms/eco_account.py
+++ b/compensation/forms/eco_account.py
@@ -192,7 +192,6 @@ class EditEcoAccountForm(NewEcoAccountForm):
     def save(self, user: User, geom_form: SimpleGeomForm):
         with transaction.atomic():
             # Fetch data from cleaned POST values
-            identifier = self.cleaned_data.get("identifier", None)
             title = self.cleaned_data.get("title", None)
             registration_date = self.cleaned_data.get("registration_date", None)
             handler_type = self.cleaned_data.get("handler_type", None)
@@ -219,7 +218,6 @@ class EditEcoAccountForm(NewEcoAccountForm):
             self.instance.legal.save()
 
             # Update main oject data
-            self.instance.identifier = identifier
             self.instance.title = title
             self.instance.deductable_surface = surface
             self.instance.comment = comment
diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py
index eaf8ccbb..49accd46 100644
--- a/compensation/models/compensation.py
+++ b/compensation/models/compensation.py
@@ -315,7 +315,6 @@ class Compensation(AbstractCompensation, CEFMixin, CoherenceMixin, PikMixin):
     def get_detail_url_absolute(self):
         return BASE_URL + self.get_detail_url()
 
-
     def save(self, *args, **kwargs):
         if self.identifier is None or len(self.identifier) == 0:
             # Create new identifier is none was given
diff --git a/compensation/tests/compensation/test_workflow.py b/compensation/tests/compensation/test_workflow.py
index ee520a57..3f024483 100644
--- a/compensation/tests/compensation/test_workflow.py
+++ b/compensation/tests/compensation/test_workflow.py
@@ -125,10 +125,16 @@ class CompensationWorkflowTestCase(BaseWorkflowTestCase):
         self.compensation = self.fill_out_compensation(self.compensation)
         pre_edit_log_count = self.compensation.log.count()
 
+        self.assertTrue(self.compensation.is_shared_with(self.superuser))
+
+        old_identifier = self.compensation.identifier
         new_title = self.create_dummy_string()
         new_identifier = self.create_dummy_string()
         new_comment = self.create_dummy_string()
-        new_geometry = MultiPolygon(srid=4326)  # Create an empty geometry
+        new_geometry = MultiPolygon(
+            self.compensation.geometry.geom.buffer(10),
+            srid=self.compensation.geometry.geom.srid
+        )  # Create a geometry which differs from the stored one
         geojson = self.create_geojson(new_geometry)
 
         check_on_elements = {
@@ -151,19 +157,21 @@ class CompensationWorkflowTestCase(BaseWorkflowTestCase):
 
         check_on_elements = {
             self.compensation.title: new_title,
-            self.compensation.identifier: new_identifier,
             self.compensation.comment: new_comment,
         }
 
         for k, v in check_on_elements.items():
             self.assertEqual(k, v)
 
-        self.assert_equal_geometries(self.compensation.geometry.geom, new_geometry)
+        # Expect identifier to not be editable
+        self.assertEqual(self.compensation.identifier, old_identifier, msg="Identifier was editable!")
 
         # Expect logs to be set
         self.assertEqual(pre_edit_log_count + 1, self.compensation.log.count())
         self.assertEqual(self.compensation.log.first().action, UserAction.EDITED)
 
+        self.assert_equal_geometries(self.compensation.geometry.geom, new_geometry)
+
     def test_checkability(self):
         """
         This tests if the checkability of the compensation (which is defined by the linked intervention's checked
diff --git a/compensation/tests/ecoaccount/test_workflow.py b/compensation/tests/ecoaccount/test_workflow.py
index 3bfaffeb..85f7db54 100644
--- a/compensation/tests/ecoaccount/test_workflow.py
+++ b/compensation/tests/ecoaccount/test_workflow.py
@@ -82,6 +82,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
         url = reverse("compensation:acc:edit", args=(self.eco_account.id,))
         pre_edit_log_count = self.eco_account.log.count()
 
+        old_identifier = self.eco_account.identifier
         new_title = self.create_dummy_string()
         new_identifier = self.create_dummy_string()
         new_comment = self.create_dummy_string()
@@ -114,7 +115,6 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
 
         check_on_elements = {
             self.eco_account.title: new_title,
-            self.eco_account.identifier: new_identifier,
             self.eco_account.deductable_surface: test_deductable_surface,
             self.eco_account.deductable_rest: test_deductable_surface - deductions_surface,
             self.eco_account.comment: new_comment,
@@ -123,6 +123,7 @@ class EcoAccountWorkflowTestCase(BaseWorkflowTestCase):
         for k, v in check_on_elements.items():
             self.assertEqual(k, v)
 
+        self.assertEqual(self.eco_account.identifier, old_identifier)
         self.assert_equal_geometries(self.eco_account.geometry.geom, new_geometry)
 
         # Expect logs to be set
diff --git a/ema/forms.py b/ema/forms.py
index d6b77a4d..26bbc2db 100644
--- a/ema/forms.py
+++ b/ema/forms.py
@@ -133,7 +133,6 @@ class EditEmaForm(NewEmaForm):
     def save(self, user: User, geom_form: SimpleGeomForm):
         with transaction.atomic():
             # Fetch data from cleaned POST values
-            identifier = self.cleaned_data.get("identifier", None)
             title = self.cleaned_data.get("title", None)
             handler_type = self.cleaned_data.get("handler_type", None)
             handler_detail = self.cleaned_data.get("handler_detail", None)
@@ -154,7 +153,6 @@ class EditEmaForm(NewEmaForm):
             self.instance.responsible.save()
 
             # Update main oject data
-            self.instance.identifier = identifier
             self.instance.title = title
             self.instance.comment = comment
             self.instance.is_pik = is_pik
diff --git a/ema/tests/test_workflow.py b/ema/tests/test_workflow.py
index 3e5bd291..c6228112 100644
--- a/ema/tests/test_workflow.py
+++ b/ema/tests/test_workflow.py
@@ -80,6 +80,7 @@ class EmaWorkflowTestCase(BaseWorkflowTestCase):
         self.ema = self.fill_out_ema(self.ema)
         pre_edit_log_count = self.ema.log.count()
 
+        old_identifier = self.ema.identifier
         new_title = self.create_dummy_string()
         new_identifier = self.create_dummy_string()
         new_comment = self.create_dummy_string()
@@ -106,13 +107,13 @@ class EmaWorkflowTestCase(BaseWorkflowTestCase):
 
         check_on_elements = {
             self.ema.title: new_title,
-            self.ema.identifier: new_identifier,
             self.ema.comment: new_comment,
         }
 
         for k, v in check_on_elements.items():
             self.assertEqual(k, v)
 
+        self.assertEqual(self.ema.identifier, old_identifier)
         self.assert_equal_geometries(self.ema.geometry.geom, new_geometry)
 
         # Expect logs to be set
diff --git a/ema/tests/unit/test_forms.py b/ema/tests/unit/test_forms.py
index ff87b9fa..d66fd14b 100644
--- a/ema/tests/unit/test_forms.py
+++ b/ema/tests/unit/test_forms.py
@@ -130,7 +130,7 @@ class EditEmaFormTestCase(BaseTestCase):
         self.assertIsNotNone(obj.responsible.handler)
         self.assertEqual(obj.responsible.conservation_office, data["conservation_office"])
         self.assertEqual(obj.responsible.conservation_file_number, data["conservation_file_number"])
-        self.assertEqual(obj.identifier, data["identifier"])
+        self.assertNotEqual(obj.identifier, data["identifier"], msg="Identifier editable via form!")
         self.assertEqual(obj.comment, data["comment"])
 
         last_log = obj.log.first()
diff --git a/intervention/forms/intervention.py b/intervention/forms/intervention.py
index 72986add..629bfe27 100644
--- a/intervention/forms/intervention.py
+++ b/intervention/forms/intervention.py
@@ -345,7 +345,6 @@ class EditInterventionForm(NewInterventionForm):
 
         """
         with transaction.atomic():
-            identifier = self.cleaned_data.get("identifier", None)
             title = self.cleaned_data.get("title", None)
             process_type = self.cleaned_data.get("type", None)
             laws = self.cleaned_data.get("laws", None)
@@ -379,7 +378,6 @@ class EditInterventionForm(NewInterventionForm):
 
             self.instance.log.add(user_action)
 
-            self.instance.identifier = identifier
             self.instance.title = title
             self.instance.comment = comment
             self.instance.modified = user_action
diff --git a/intervention/forms/modals/check.py b/intervention/forms/modals/check.py
index cc06e63b..61111340 100644
--- a/intervention/forms/modals/check.py
+++ b/intervention/forms/modals/check.py
@@ -33,7 +33,7 @@ class CheckModalForm(BaseModalForm):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
         self.form_title = _("Run check")
-        self.form_caption = _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(self.user.first_name, self.user.last_name)
+        self.form_caption = _("The necessary control steps have been performed:").format(self.user.first_name, self.user.last_name)
         self.valid = False
 
     def _are_deductions_valid(self):
diff --git a/intervention/tables.py b/intervention/tables.py
index 39cae2a9..76d4018b 100644
--- a/intervention/tables.py
+++ b/intervention/tables.py
@@ -33,6 +33,11 @@ class InterventionTable(BaseTable, TableRenderMixin, TableOrderMixin):
         verbose_name=_("Parcel gmrkng"),
         orderable=False,
         accessor="geometry",
+        attrs={
+            "th": {
+                "class": "w-25",
+            }
+        }
     )
     c = tables.Column(
         verbose_name=_("Checked"),
diff --git a/intervention/views/intervention.py b/intervention/views/intervention.py
index e04f6281..3371167b 100644
--- a/intervention/views/intervention.py
+++ b/intervention/views/intervention.py
@@ -39,7 +39,7 @@ def index_view(request: HttpRequest):
     """
     template = "generic_index.html"
 
-    # Filtering by user access is performed in table filter inside of InterventionTableFilter class
+    # Filtering by user access is performed in table filter inside InterventionTableFilter class
     interventions = Intervention.objects.filter(
         deleted=None,  # not deleted
     ).select_related(
diff --git a/konova/forms/modals/record_form.py b/konova/forms/modals/record_form.py
index 812b697a..b27111a3 100644
--- a/konova/forms/modals/record_form.py
+++ b/konova/forms/modals/record_form.py
@@ -27,7 +27,7 @@ class RecordModalForm(BaseModalForm):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
         self.form_title = _("Record data")
-        self.form_caption = _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(self.user.first_name, self.user.last_name)
+        self.form_caption = _("The necessary control steps have been performed:").format(self.user.first_name, self.user.last_name)
         # Disable automatic w-100 setting for this type of modal form. Looks kinda strange
         self.fields["confirm"].widget.attrs["class"] = ""
 
diff --git a/konova/models/geometry.py b/konova/models/geometry.py
index d87e557f..938c8526 100644
--- a/konova/models/geometry.py
+++ b/konova/models/geometry.py
@@ -370,6 +370,9 @@ class Geometry(BaseResource):
         Returns:
             complexity_factor (float): The estimated complexity
         """
+        if self.geom.empty:
+            return 0
+
         geom_envelope = self.geom.envelope
         diff = geom_envelope - self.geom
         complexity_factor = 1 - self.geom.area / diff.area
diff --git a/konova/tests/test_views.py b/konova/tests/test_views.py
index c540e785..860b3616 100644
--- a/konova/tests/test_views.py
+++ b/konova/tests/test_views.py
@@ -146,7 +146,6 @@ class BaseTestCase(TestCase):
         geometry = Geometry.objects.create()
         # Finally create main object, holding the other objects
         intervention = Intervention.objects.create(
-            identifier="TEST",
             title="Test_title",
             responsible=responsibility_data,
             legal=legal_data,
@@ -174,7 +173,6 @@ class BaseTestCase(TestCase):
         geometry = Geometry.objects.create()
         # Finally create main object, holding the other objects
         compensation = Compensation.objects.create(
-            identifier="TEST",
             title="Test_title",
             intervention=interv,
             created=action,
@@ -200,10 +198,8 @@ class BaseTestCase(TestCase):
         responsible_data.handler = handler
         responsible_data.save()
 
-        identifier = EcoAccount().generate_new_identifier()
         # Finally create main object, holding the other objects
         eco_account = EcoAccount.objects.create(
-            identifier=identifier,
             title="Test_title",
             deductable_surface=500,
             legal=lega_data,
@@ -230,7 +226,6 @@ class BaseTestCase(TestCase):
         responsible_data.save()
         # Finally create main object, holding the other objects
         ema = Ema.objects.create(
-            identifier="TEST",
             title="Test_title",
             responsible=responsible_data,
             created=action,
@@ -474,7 +469,7 @@ class BaseTestCase(TestCase):
         eco_account.save()
         return eco_account
 
-    def assert_equal_geometries(self, geom1: MultiPolygon, geom2: MultiPolygon):
+    def assert_equal_geometries(self, geom1: MultiPolygon, geom2: MultiPolygon, tolerance = 0.001):
         """ Assert for geometries to be equal
 
         Transforms the geometries to matching srids before checking
@@ -491,7 +486,6 @@ class BaseTestCase(TestCase):
             self.assertTrue(True)
             return
 
-        tolerance = 0.001
         if geom1.srid != geom2.srid:
             # Due to prior possible transformation of any of these geometries, we need to make sure there exists a
             # transformation from one coordinate system into the other, which is valid
diff --git a/konova/tests/unit/test_forms.py b/konova/tests/unit/test_forms.py
index 3cbb4371..190a756e 100644
--- a/konova/tests/unit/test_forms.py
+++ b/konova/tests/unit/test_forms.py
@@ -152,7 +152,7 @@ class RecordModalFormTestCase(BaseTestCase):
         )
         self.assertEqual(form.form_title, str(_("Record data")))
         self.assertEqual(form.form_caption, str(
-            _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(
+            _("The necessary control steps have been performed:").format(
             self.user.first_name,
             self.user.last_name
             )
diff --git a/konova/utils/tables.py b/konova/utils/tables.py
index d64c7666..48785481 100644
--- a/konova/utils/tables.py
+++ b/konova/utils/tables.py
@@ -173,9 +173,13 @@ class TableRenderMixin:
         Returns:
 
         """
+        value_orig = value
         max_length = 75
         if len(value) > max_length:
             value = f"{value[:max_length]}..."
+        value = format_html(
+            f'<div title="{value_orig}">{value}</div>'
+        )
         return value
 
     def render_d(self, value, record: GeoReferencedMixin):
diff --git a/konova/views/geometry.py b/konova/views/geometry.py
index 0a58a3c6..767762fd 100644
--- a/konova/views/geometry.py
+++ b/konova/views/geometry.py
@@ -33,9 +33,6 @@ class GeomParcelsView(LoginRequiredMixin, View):
         Returns:
             A rendered piece of HTML
         """
-        # HTTP code 286 states that the HTMX should stop polling for updates
-        # https://htmx.org/docs/#polling
-        status_code = 286
         template = "konova/includes/parcels/parcel_table_frame.html"
 
         geom = get_object_or_404(Geometry, id=id)
@@ -49,22 +46,26 @@ class GeomParcelsView(LoginRequiredMixin, View):
 
         waiting_too_long = self._check_waiting_too_long(geom)
 
-        parcels_are_currently_calculated = (
-                geometry_exists and
-                not parcels_are_available and
-                geom_parcel_update_started and
-                not geom_parcel_update_finished
-        )
-
-        if not parcels_are_available and waiting_too_long:
-            # Trigger calculation again - process may have failed in the background
+        if geometry_exists and not parcels_are_available and waiting_too_long:
+            # Trigger calculation again - process may have failed silently
             celery_update_parcels.delay(geom.id)
             parcels_are_currently_calculated = True
+        else:
+            parcels_are_currently_calculated = (
+                    geometry_exists and
+                    not parcels_are_available and
+                    geom_parcel_update_started and
+                    not geom_parcel_update_finished
+            )
 
         if parcels_are_currently_calculated:
             # Parcels are being calculated right now. Change the status code, so polling stays active for fetching
             # results after the calculation
             status_code = 200
+        else:
+            # HTTP code 286 states that the HTMX should stop polling for updates
+            # https://htmx.org/docs/#polling
+            status_code = 286
 
         if parcels_are_available or not geometry_exists:
             # Default case: Parcels are calculated or there is no geometry at all
diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo
index ff48ee9b..1db23bbc 100644
Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index c34cf2d9..cd34fbe4 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -321,7 +321,7 @@ msgstr ""
 #: intervention/templates/intervention/detail/view.html:39
 #: intervention/templates/intervention/report/report.html:20
 msgid "Law"
-msgstr "Gesetz"
+msgstr "Rechtsgrundlage"
 
 #: analysis/templates/analysis/reports/includes/old_data/amount.html:17
 #: compensation/templates/compensation/detail/compensation/includes/deadlines.html:33
@@ -1452,11 +1452,9 @@ msgstr "Prüfung vornehmen"
 #: intervention/forms/modals/check.py:36 konova/forms/modals/record_form.py:30
 #: konova/tests/unit/test_forms.py:155
 msgid ""
-"I, {} {}, confirm that all necessary control steps have been performed by "
-"myself."
+"The necessary control steps have been performed:"
 msgstr ""
-"Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt "
-"wurden:"
+"Die notwendigen Kontrollschritte wurden durchgeführt:"
 
 #: intervention/forms/modals/deduction.py:33
 msgid "Only recorded accounts can be selected for deductions"