diff --git a/app/but/jury_but.py b/app/but/jury_but.py
index 31367a98e19f82f2d6b4a7a99e7bc5f45e6e7350..97ab95acadac558476041c941bce155537c2bf7b 100644
--- a/app/but/jury_but.py
+++ b/app/but/jury_but.py
@@ -695,7 +695,7 @@ class DecisionsProposeesAnnee(DecisionsProposees):
                         code=code,
                     )
                 else:  # Update validation année BUT
-                    self.validation.etud = self.etud
+                    assert self.validation.etudid == self.etud.id
                     self.validation.formsemestre = self.formsemestre_impair
                     self.validation.formation_id = self.formsemestre.formation_id
                     self.validation.ordre = self.annee_but
diff --git a/app/models/but_validations.py b/app/models/but_validations.py
index 00dc61952fa7f698df72d343f76414876aeccc4d..997d1a46fdba31763aff0be96eb8992683d56cf2 100644
--- a/app/models/but_validations.py
+++ b/app/models/but_validations.py
@@ -170,7 +170,9 @@ class ApcValidationAnnee(db.Model):
 
     __tablename__ = "apc_validation_annee"
     # Assure unicité de la décision:
-    __table_args__ = (db.UniqueConstraint("etudid", "annee_scolaire", "ordre"),)
+    __table_args__ = (
+        db.UniqueConstraint("etudid", "ordre", "formation_id"),
+    )  # il aurait été plus intelligent de mettre ici le refcomp
     id = db.Column(db.Integer, primary_key=True)
     etudid = db.Column(
         db.Integer,
@@ -183,8 +185,8 @@ class ApcValidationAnnee(db.Model):
     formsemestre_id = db.Column(
         db.Integer, db.ForeignKey("notes_formsemestre.id"), nullable=True
     )
-    "le semestre origine, normalement l'IMPAIR (le 1er) de l'année"
-    formation_id = db.Column(
+    "le semestre IMPAIR (le 1er) de l'année"
+    formation_id = db.Column(  # il aurait été plus intelligent de mettre ici le refcomp
         db.Integer,
         db.ForeignKey("notes_formations.id"),
         nullable=False,
diff --git a/migrations/versions/829683efddc4_change_apcvalidationannee.py b/migrations/versions/829683efddc4_change_apcvalidationannee.py
new file mode 100644
index 0000000000000000000000000000000000000000..8955a1a3dfd70f039fe2aa246703cf4c49fe937b
--- /dev/null
+++ b/migrations/versions/829683efddc4_change_apcvalidationannee.py
@@ -0,0 +1,44 @@
+"""Change ApcValidationAnnee
+
+Revision ID: 829683efddc4
+Revises: c701224fa255
+Create Date: 2023-06-28 09:47:16.591028
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = "829683efddc4"
+down_revision = "c701224fa255"
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table("apc_validation_annee", schema=None) as batch_op:
+        batch_op.drop_constraint(
+            "apc_validation_annee_etudid_annee_scolaire_ordre_key", type_="unique"
+        )
+        # batch_op.create_unique_constraint(
+        #     "apc_validation_annee_etudid_formation_ordre_key",
+        #     ["etudid", "ordre", "formation_id"],
+        # )
+
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table("apc_validation_annee", schema=None) as batch_op:
+        # batch_op.drop_constraint(
+        #     "apc_validation_annee_etudid_formation_ordre_key", type_="unique"
+        # )
+        batch_op.create_unique_constraint(
+            "apc_validation_annee_etudid_annee_scolaire_ordre_key",
+            ["etudid", "annee_scolaire", "ordre"],
+        )
+
+    # ### end Alembic commands ###