diff --git a/base/blocks.php b/base/blocks.php
index 864ca34a108067a9ff2353edbfeeaf6453d88375..9b52976423e2bb242c66c06707dc7fb8c5f37530 100644
--- a/base/blocks.php
+++ b/base/blocks.php
@@ -47,6 +47,9 @@ function blocks_declarer_tables_objets_sql($tables) {
 		'field'                   => [
 			'id_block'     => 'bigint(21) NOT NULL',
 			'id_blocktype' => 'bigint(21) NOT NULL DEFAULT 0',
+			'objet'        => 'varchar(25) DEFAULT "" NOT NULL',
+			'id_objet'     => 'bigint(21) DEFAULT "0" NOT NULL',
+			'rang_lien'    => 'int(4) DEFAULT "0" NOT NULL',
 			'ancre'        => 'varchar(20) NOT NULL DEFAULT ""',
 			'valeurs'      => 'text NOT NULL DEFAULT ""',
 			'date'         => 'datetime NOT NULL DEFAULT "0000-00-00 00:00:00"',
@@ -56,13 +59,15 @@ function blocks_declarer_tables_objets_sql($tables) {
 		'key'                     => [
 			'PRIMARY KEY'      => 'id_block',
 			'KEY id_blocktype' => 'id_blocktype',
+			'KEY objet'        => 'objet',
+			'KEY id_objet'     => 'id_objet',
 			'KEY statut'       => 'statut',
 		],
 		'titre'                   => 'id_blocktype AS titre',
 		'date'                    => 'date',
-		'champs_editables'        => ['id_blocktype', 'ancre'],
-		'champs_versionnes'       => ['id_blocktype', 'ancre', 'valeurs'],
-		'tables_jointures'        => ['spip_blocks_liens'],
+		'champs_editables'        => ['id_blocktype', 'id_objet', 'objet', 'ancre'],
+		'champs_versionnes'       => ['id_blocktype', 'id_objet', 'objet', 'ancre', 'valeurs'],
+		'tables_jointures'        => ['spip_blocktypes'],
 		'statut_textes_instituer' => [
 			'prepa'  => 'texte_statut_en_cours_redaction',
 			'prop'   => 'texte_statut_propose_evaluation',
@@ -118,7 +123,7 @@ function blocks_declarer_tables_objets_sql($tables) {
 	];
 
 	// jointure potentielle avec tous les objets
-	$tables[]['tables_jointures'][] = 'blocks_liens';
+	$tables[]['tables_jointures'][] = 'blocks';
 
 	return $tables;
 }
@@ -134,21 +139,6 @@ function blocks_declarer_tables_objets_sql($tables) {
  */
 function blocks_declarer_tables_auxiliaires($tables) {
 
-	$tables['spip_blocks_liens'] = [
-		'field' => [
-			'id_block'  => 'bigint(21) DEFAULT "0" NOT NULL',
-			'id_objet'  => 'bigint(21) DEFAULT "0" NOT NULL',
-			'objet'     => 'varchar(25) DEFAULT "" NOT NULL',
-			'rang_lien' => 'int(4) DEFAULT "0" NOT NULL',
-			'vu'        => 'varchar(6) DEFAULT "non" NOT NULL',
-		],
-		'key'   => [
-			'PRIMARY KEY'         => 'id_block,id_objet,objet',
-			// clé unique : un block ne peut être associé qu'à un seul objet
-			'UNIQUE KEY id_block' => 'id_block',
-		],
-	];
-
 	// table de liaison entre blocktypes enfants / parents
 	$tables['spip_blocktypes_liens'] = [
 		'field' => [
diff --git a/blocks_administrations.php b/blocks_administrations.php
index 5821c0b7e4789b5d940233328cbeff83ca01eb4a..ba53d833f7d7ef80064eb0598f23826c7e01bec4 100644
--- a/blocks_administrations.php
+++ b/blocks_administrations.php
@@ -26,7 +26,7 @@ function blocks_upgrade($nom_meta_base_version, $version_cible) {
 	$maj = [];
 
 	$maj['create'] = [
-		['maj_tables', ['spip_blocks', 'spip_blocks_liens', 'spip_blocktypes', 'spip_blocktypes_liens']],
+		['maj_tables', ['spip_blocks', 'spip_blocktypes', 'spip_blocktypes_liens']],
 		['blocks_installe_config'],
 	];
 
@@ -39,6 +39,12 @@ function blocks_upgrade($nom_meta_base_version, $version_cible) {
 		['maj_tables', ['spip_blocks', 'spip_blocktypes', 'spip_blocktypes_liens']],
 	];
 
+	$maj['1.3.0'] = [
+		['maj_tables', ['spip_blocks', 'spip_blocktypes', 'spip_blocktypes_liens']],
+		['blocks_update_1_3_0'],
+		['sql_drop_table', 'spip_blocks_liens'],
+	];
+
 	include_spip('base/upgrade');
 	maj_plugin($nom_meta_base_version, $version_cible, $maj);
 }
@@ -146,3 +152,19 @@ function blocks_update_1_0_1() {
 	sql_alter('TABLE spip_blocks_liens CHANGE id_bloc id_block bigint(21) NOT NULL DEFAULT 0');
 	sql_alter('TABLE spip_blocktypes CHANGE id_blocs_type id_blocktype bigint(21) NOT NULL AUTO_INCREMENT');
 }
+
+function blocks_update_1_3_0() {
+	// transférer les liens de spip_blocks_liens vers spip_blocks
+	$blocks_liens = sql_allfetsel('*', 'spip_blocks_liens');
+	foreach ($blocks_liens as $blocks_lien) {
+		sql_updateq(
+			'spip_blocks',
+			[
+				'id_objet'  => $blocks_lien['id_objet'],
+				'objet'     => $blocks_lien['objet'],
+				'rang_lien' => $blocks_lien['rang_lien'],
+			],
+			'id_block = ' . $blocks_lien['id_block']
+		);
+	}
+}
diff --git a/paquet.xml b/paquet.xml
index 2a38d5a48a8d56a920400412bbef9e25cf75193f..3296b87b88b45c99c3386a8400fc8587cf9412ff 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -5,7 +5,7 @@
     compatibilite="[4.2.0;4.2.*]"
     logo="prive/themes/spip/images/blocks-xx.svg"
     documentation=""
-    schema="1.2.0"
+    schema="1.3.0"
 >
 
     <nom>Blocks</nom>