From b7d258ebe900b2c95cc4f9acb3c736fda7428c40 Mon Sep 17 00:00:00 2001
From: librelois <elois@ifee.fr>
Date: Fri, 16 Aug 2019 20:20:20 +0200
Subject: [PATCH] [ref]whole: split crate documents in 2 new crates: block-doc
 & user-docs

---
 .gitlab-ci.yml                                |  2 +-
 Cargo.lock                                    | 66 +++++++++++-----
 Cargo.toml                                    |  5 +-
 .../installer-son-environnement-de-dev.md     |  6 +-
 doc/fr/developpeurs/tests-auto.md             |  6 +-
 lib/core/conf/Cargo.toml                      |  2 +-
 lib/core/message/Cargo.toml                   |  3 +-
 lib/core/message/src/events.rs                |  4 +-
 lib/core/message/src/responses.rs             | 10 +--
 lib/core/module/Cargo.toml                    |  2 +-
 lib/core/network/Cargo.toml                   |  3 +-
 lib/core/network/events.rs                    |  4 +-
 lib/core/network/requests.rs                  |  4 +-
 lib/dubp/block-doc/Cargo.toml                 | 35 +++++++++
 lib/dubp/block-doc/README.md                  |  9 +++
 .../src/documents => block-doc/src}/block.rs  |  0
 .../documents => block-doc/src}/block/v10.rs  | 25 +++---
 lib/dubp/block-doc/src/lib.rs                 | 77 +++++++++++++++++++
 .../blocks.rs => block-doc/src/parser.rs}     | 29 ++++---
 lib/dubp/{documents => user-docs}/Cargo.toml  |  3 +-
 lib/dubp/{documents => user-docs}/README.md   |  0
 .../src/documents/certification.rs            |  0
 .../src/documents/certification/v10.rs        |  0
 .../src/documents/identity.rs                 |  0
 .../src/documents/identity/v10.rs             |  0
 .../src/documents/membership.rs               |  0
 .../src/documents/membership/v10.rs           |  0
 .../src/documents/mod.rs                      | 35 ---------
 .../src/documents/revocation.rs               |  0
 .../src/documents/revocation/v10.rs           |  0
 .../src/documents/transaction.rs              |  0
 lib/dubp/{documents => user-docs}/src/lib.rs  |  0
 .../src/parsers/certifications.rs             |  0
 .../src/parsers/identities.rs                 |  0
 .../src/parsers/memberships.rs                |  0
 .../src/parsers/mod.rs                        | 59 ++------------
 .../src/parsers/revoked.rs                    |  0
 .../src/parsers/transactions.rs               | 45 ++++++++++-
 lib/dunp/network-documents/Cargo.toml         |  2 +-
 .../blockchain/blockchain-dal/Cargo.toml      |  5 +-
 .../blockchain-dal/src/entities/block.rs      |  2 +-
 .../blockchain-dal/src/entities/fork_tree.rs  |  6 +-
 .../blockchain-dal/src/entities/identity.rs   |  2 +-
 .../blockchain-dal/src/entities/sources.rs    |  2 +-
 .../blockchain/blockchain-dal/src/lib.rs      |  2 +-
 .../blockchain-dal/src/readers/block.rs       |  2 +-
 .../src/readers/currency_params.rs            |  2 +-
 .../blockchain-dal/src/readers/identity.rs    |  2 +-
 .../blockchain/blockchain-dal/src/tools.rs    |  2 +-
 .../blockchain-dal/src/writers/block.rs       |  2 +-
 .../src/writers/certification.rs              |  2 +-
 .../blockchain-dal/src/writers/dividend.rs    |  2 +-
 .../blockchain-dal/src/writers/fork_tree.rs   |  4 +-
 .../blockchain-dal/src/writers/identity.rs    |  2 +-
 .../blockchain-dal/src/writers/requests.rs    |  6 +-
 .../blockchain-dal/src/writers/transaction.rs |  2 +-
 lib/modules/blockchain/blockchain/Cargo.toml  |  5 +-
 lib/modules/blockchain/blockchain/src/dbex.rs |  4 +-
 .../blockchain/src/dubp/apply/mod.rs          |  4 +-
 .../blockchain/src/dubp/check/hashs.rs        |  2 +-
 .../blockchain/src/dubp/check/mod.rs          |  2 +-
 .../blockchain/blockchain/src/dubp/mod.rs     |  2 +-
 .../blockchain/src/dunp/receiver.rs           |  2 +-
 .../blockchain/src/fork/fork_algo.rs          | 12 +--
 .../blockchain/src/fork/revert_block.rs       |  6 +-
 .../blockchain/src/fork/stackable_blocks.rs   |  2 +-
 lib/modules/blockchain/blockchain/src/lib.rs  |  2 +-
 .../blockchain/src/requests/received.rs       |  2 +-
 .../blockchain/src/sync/apply/mod.rs          |  2 +-
 .../src/sync/download/json_reader_worker.rs   |  2 +-
 .../blockchain/blockchain/src/sync/mod.rs     |  2 +-
 lib/modules/skeleton/Cargo.toml               |  2 +-
 lib/modules/tui/Cargo.toml                    |  2 +-
 lib/modules/ws2p-v1-legacy/Cargo.toml         |  3 +-
 lib/modules/ws2p-v1-legacy/src/events/sent.rs |  2 +-
 lib/modules/ws2p-v1-legacy/src/lib.rs         |  8 +-
 .../ws2p-v1-legacy/src/serializers/block.rs   |  2 +-
 .../src/serializers/certification.rs          |  2 +-
 .../src/serializers/identity.rs               |  2 +-
 .../src/serializers/membership.rs             |  2 +-
 .../ws2p-v1-legacy/src/serializers/revoked.rs |  2 +-
 .../src/serializers/transaction.rs            |  2 +-
 .../src/ws_connections/messages.rs            |  2 +-
 .../src/ws_connections/meta_datas.rs          |  4 +-
 .../src/ws_connections/responses/mod.rs       |  2 +-
 .../src/ws_connections/responses/received.rs  |  2 +-
 lib/modules/ws2p/ws2p-messages/Cargo.toml     |  3 +-
 lib/modules/ws2p/ws2p-messages/lib.rs         | 10 +--
 .../ws2p-messages/v2/payload_container.rs     | 12 +--
 .../ws2p/ws2p-messages/v2/req_responses.rs    |  8 +-
 lib/modules/ws2p/ws2p-protocol/Cargo.toml     |  2 +-
 lib/modules/ws2p/ws2p/Cargo.toml              |  2 +-
 .../Cargo.toml                                |  7 +-
 .../src/lib.rs                                |  2 +-
 .../src/mocks/identity.rs                     |  6 +-
 .../src/mocks/mod.rs                          |  5 +-
 .../user-docs-tests-tools/src/mocks/tx.rs     | 57 ++++++++++++++
 97 files changed, 433 insertions(+), 254 deletions(-)
 create mode 100644 lib/dubp/block-doc/Cargo.toml
 create mode 100644 lib/dubp/block-doc/README.md
 rename lib/dubp/{documents/src/documents => block-doc/src}/block.rs (100%)
 rename lib/dubp/{documents/src/documents => block-doc/src}/block/v10.rs (97%)
 create mode 100644 lib/dubp/block-doc/src/lib.rs
 rename lib/dubp/{documents/src/parsers/blocks.rs => block-doc/src/parser.rs} (94%)
 rename lib/dubp/{documents => user-docs}/Cargo.toml (90%)
 rename lib/dubp/{documents => user-docs}/README.md (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/certification.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/certification/v10.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/identity.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/identity/v10.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/membership.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/membership/v10.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/mod.rs (92%)
 rename lib/dubp/{documents => user-docs}/src/documents/revocation.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/revocation/v10.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/documents/transaction.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/lib.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/parsers/certifications.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/parsers/identities.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/parsers/memberships.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/parsers/mod.rs (57%)
 rename lib/dubp/{documents => user-docs}/src/parsers/revoked.rs (100%)
 rename lib/dubp/{documents => user-docs}/src/parsers/transactions.rs (70%)
 rename lib/tests-tools/{documents-tests-tools => user-docs-tests-tools}/Cargo.toml (70%)
 rename lib/tests-tools/{documents-tests-tools => user-docs-tests-tools}/src/lib.rs (94%)
 rename lib/tests-tools/{documents-tests-tools => user-docs-tests-tools}/src/mocks/identity.rs (89%)
 rename lib/tests-tools/{documents-tests-tools => user-docs-tests-tools}/src/mocks/mod.rs (96%)
 create mode 100644 lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5f19148e..3f42afa5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -136,7 +136,7 @@ tests:win64:stable:
     - cargo test --package durs-ws2p-messages --target=x86_64-pc-windows-gnu
     - cargo test --package dup-crypto --target=x86_64-pc-windows-gnu
     - cargo test --package durs-common-tools --target=x86_64-pc-windows-gnu
-    - cargo test --package dubp-documents --target=x86_64-pc-windows-gnu
+    - cargo test --package dubp-user-docs --target=x86_64-pc-windows-gnu
     - cargo test --package json-pest-parser --target=x86_64-pc-windows-gnu
     - cargo test --package durs-network-documents --target=x86_64-pc-windows-gnu
     - cargo test --package rules-engine --target=x86_64-pc-windows-gnu
diff --git a/Cargo.lock b/Cargo.lock
index 13417b4f..062d4974 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -289,6 +289,28 @@ dependencies = [
  "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
+[[package]]
+name = "dubp-block-doc"
+version = "0.1.0"
+dependencies = [
+ "dubp-common-doc 0.1.0",
+ "dubp-currency-params 0.2.0",
+ "dubp-user-docs 0.14.0",
+ "dubp-user-docs-tests-tools 0.1.0",
+ "dup-crypto 0.7.0",
+ "durs-common-tools 0.2.0",
+ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "json-pest-parser 0.2.0",
+ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unwrap 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
 [[package]]
 name = "dubp-common-doc"
 version = "0.1.0"
@@ -320,11 +342,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "dubp-documents"
+name = "dubp-user-docs"
 version = "0.14.0"
 dependencies = [
  "dubp-common-doc 0.1.0",
- "dubp-currency-params 0.2.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -340,12 +361,13 @@ dependencies = [
 ]
 
 [[package]]
-name = "dubp-documents-tests-tools"
+name = "dubp-user-docs-tests-tools"
 version = "0.1.0"
 dependencies = [
+ "dubp-block-doc 0.1.0",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "dup-crypto-tests-tools 0.1.0",
 ]
@@ -394,10 +416,11 @@ name = "durs-blockchain"
 version = "0.2.0-a"
 dependencies = [
  "dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dubp-block-doc 0.1.0",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
- "dubp-documents-tests-tools 0.1.0",
+ "dubp-user-docs 0.14.0",
+ "dubp-user-docs-tests-tools 0.1.0",
  "dup-crypto 0.7.0",
  "dup-crypto-tests-tools 0.1.0",
  "durs-blockchain-dal 0.2.0-a",
@@ -424,10 +447,11 @@ dependencies = [
 name = "durs-blockchain-dal"
 version = "0.2.0-a"
 dependencies = [
+ "dubp-block-doc 0.1.0",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
- "dubp-documents-tests-tools 0.1.0",
+ "dubp-user-docs 0.14.0",
+ "dubp-user-docs-tests-tools 0.1.0",
  "dup-crypto 0.7.0",
  "dup-crypto-tests-tools 0.1.0",
  "durs-common-tests-tools 0.1.0",
@@ -466,7 +490,7 @@ version = "0.2.0-a"
 dependencies = [
  "dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-module 0.2.0-a",
@@ -508,9 +532,10 @@ dependencies = [
 name = "durs-message"
 version = "0.2.0-a"
 dependencies = [
+ "dubp-block-doc 0.1.0",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-blockchain-dal 0.2.0-a",
  "durs-module 0.2.0-a",
@@ -526,7 +551,7 @@ name = "durs-module"
 version = "0.2.0-a"
 dependencies = [
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-network-documents 0.4.0",
@@ -542,8 +567,9 @@ dependencies = [
 name = "durs-network"
 version = "0.2.0-a"
 dependencies = [
+ "dubp-block-doc 0.1.0",
  "dubp-common-doc 0.1.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-module 0.2.0-a",
@@ -563,7 +589,7 @@ dependencies = [
  "bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -584,7 +610,7 @@ name = "durs-skeleton"
 version = "0.1.0"
 dependencies = [
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-conf 0.2.0-a",
@@ -604,7 +630,7 @@ name = "durs-tui"
 version = "0.2.0-a"
 dependencies = [
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-conf 0.2.0-a",
@@ -641,7 +667,7 @@ dependencies = [
  "bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tests-tools 0.1.0",
  "durs-common-tools 0.2.0",
@@ -668,9 +694,10 @@ version = "0.2.0-a"
 dependencies = [
  "bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dubp-block-doc 0.1.0",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-network-documents 0.4.0",
@@ -688,7 +715,7 @@ version = "0.2.0-a"
 dependencies = [
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-module 0.2.0-a",
@@ -708,9 +735,10 @@ version = "0.2.0-a"
 dependencies = [
  "bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dubp-block-doc 0.1.0",
  "dubp-common-doc 0.1.0",
  "dubp-currency-params 0.2.0",
- "dubp-documents 0.14.0",
+ "dubp-user-docs 0.14.0",
  "dup-crypto 0.7.0",
  "durs-common-tools 0.2.0",
  "durs-conf 0.2.0-a",
diff --git a/Cargo.toml b/Cargo.toml
index 47f6588f..3e9fa916 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,9 +7,10 @@ members = [
     "lib/core/module",
     "lib/core/network",
     "lib/crypto",
+    "lib/dubp/block-doc",
     "lib/dubp/common-doc",
     "lib/dubp/currency-params",
-    "lib/dubp/documents",
+    "lib/dubp/user-docs",
     "lib/dubp/wot",
     "lib/dunp/network-documents",
     "lib/modules/blockchain/blockchain",
@@ -20,7 +21,7 @@ members = [
     "lib/modules/ws2p/ws2p",
     "lib/modules/ws2p/ws2p-protocol",
     "lib/tests-tools/crypto-tests-tools",
-    "lib/tests-tools/documents-tests-tools",
+    "lib/tests-tools/user-docs-tests-tools",
     "lib/tests-tools/common-tests-tools",
     "lib/tools/common-tools",
     "lib/tools/json-pest-parser",
diff --git a/doc/fr/developpeurs/installer-son-environnement-de-dev.md b/doc/fr/developpeurs/installer-son-environnement-de-dev.md
index c64f275c..845d98b9 100644
--- a/doc/fr/developpeurs/installer-son-environnement-de-dev.md
+++ b/doc/fr/developpeurs/installer-son-environnement-de-dev.md
@@ -318,13 +318,13 @@ La compilation de cette feature `ssl` nécessitera que vous ayez la lib opensssl
 
 ### tc="cargo fmt && cargo test --package"
 
-Pour exécuter les tests d'une crate en particulier. Par exemple pour exécuter les tests de la crate `dubp-documents` sasissez la commande suivante :
+Pour exécuter les tests d'une crate en particulier. Par exemple pour exécuter les tests de la crate `dubp-user-docs` sasissez la commande suivante :
 
-    tc dubp-documents
+    tc dubp-user-docs
 
 Le nom d'une crate est indiqué dans l'attribut `name` du fichier `Cargo.toml` situé a la racine de la crate en question.
 
-Par exemple pour la crate située dans `lib/tools/documents`, il faut regarder le fichier `lib/tools/documents/Cargo.toml`.
+Par exemple pour la crate située dans `lib/tools/user-docs`, il faut regarder le fichier `lib/tools/user-docs/Cargo.toml`.
 
 ### ta="cargo fmt && cargo test --all"
 
diff --git a/doc/fr/developpeurs/tests-auto.md b/doc/fr/developpeurs/tests-auto.md
index c5f8b86a..50389ac9 100644
--- a/doc/fr/developpeurs/tests-auto.md
+++ b/doc/fr/developpeurs/tests-auto.md
@@ -26,13 +26,13 @@ Pour exécutez les tests (TU+TI) d'une crate en particulier :
 
     cargo test --package CRATE_NAME
 
-Par exemple pour exécuter les tests (TU+TI) de la crate dubp-documents:
+Par exemple pour exécuter les tests (TU+TI) de la crate dubp-user-docs:
 
-    cargo test --package dubp-documents
+    cargo test --package dubp-user-docs
 
 Le nom d'une crate est indiqué dans l'attribut `name` du fichier `Cargo.toml` situé a la racine de la crate en question.
 
-Par exemple pour la crate située dans `lib/tools/documents`, il faut regarder le fichier `lib/tools/documents/Cargo.toml`.
+Par exemple pour la crate située dans `lib/tools/user-docs`, il faut regarder le fichier `lib/tools/user-docs/Cargo.toml`.
 
 ## Lancer tout les tests du projet
 
diff --git a/lib/core/conf/Cargo.toml b/lib/core/conf/Cargo.toml
index d0517034..b9c4b435 100644
--- a/lib/core/conf/Cargo.toml
+++ b/lib/core/conf/Cargo.toml
@@ -13,7 +13,7 @@ path = "src/lib.rs"
 dirs = "1.0.2"
 dup-crypto = { path = "../../crypto" }
 dubp-currency-params = { path = "../../dubp/currency-params" }
-dubp-documents= { path = "../../dubp/documents" }
+dubp-user-docs= { path = "../../dubp/user-docs" }
 durs-module = { path = "../module" }
 durs-common-tools = { path = "../../tools/common-tools" }
 failure = "0.1.5"
diff --git a/lib/core/message/Cargo.toml b/lib/core/message/Cargo.toml
index b97bf7af..4c353a56 100644
--- a/lib/core/message/Cargo.toml
+++ b/lib/core/message/Cargo.toml
@@ -10,9 +10,10 @@ edition = "2018"
 path = "src/lib.rs"
 
 [dependencies]
+dubp-block-doc = { path = "../../dubp/block-doc"} #, version = "0.1.0" }
 dubp-common-doc = { path = "../../dubp/common-doc"} #, version = "0.1.0" }
 dubp-currency-params = { path = "../../dubp/currency-params" }
-dubp-documents= { path = "../../dubp/documents" }
+dubp-user-docs= { path = "../../dubp/user-docs" }
 dup-crypto = { path = "../../crypto" }
 durs-module = { path = "../module" }
 durs-network = { path = "../network" }
diff --git a/lib/core/message/src/events.rs b/lib/core/message/src/events.rs
index c89ac18f..88385edf 100644
--- a/lib/core/message/src/events.rs
+++ b/lib/core/message/src/events.rs
@@ -14,9 +14,9 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::*;
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::Blockstamp;
-use dubp_documents::documents::block::BlockDocument;
-use dubp_documents::documents::UserDocumentDUBP;
+use dubp_user_docs::documents::UserDocumentDUBP;
 use durs_network::events::NetworkEvent;
 
 /// The DURS event message.
diff --git a/lib/core/message/src/responses.rs b/lib/core/message/src/responses.rs
index e04778d6..ee7dfbde 100644
--- a/lib/core/message/src/responses.rs
+++ b/lib/core/message/src/responses.rs
@@ -13,13 +13,13 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::BlockNumber;
 use dubp_common_doc::Blockstamp;
-use dubp_documents::documents::block::BlockDocument;
-use dubp_documents::documents::certification::CertificationDocument;
-use dubp_documents::documents::identity::IdentityDocument;
-use dubp_documents::documents::membership::MembershipDocument;
-use dubp_documents::documents::revocation::RevocationDocumentV10;
+use dubp_user_docs::documents::certification::CertificationDocument;
+use dubp_user_docs::documents::identity::IdentityDocument;
+use dubp_user_docs::documents::membership::MembershipDocument;
+use dubp_user_docs::documents::revocation::RevocationDocumentV10;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
 use durs_module::ModuleReqId;
diff --git a/lib/core/module/Cargo.toml b/lib/core/module/Cargo.toml
index dba78f84..53f63f03 100644
--- a/lib/core/module/Cargo.toml
+++ b/lib/core/module/Cargo.toml
@@ -12,7 +12,7 @@ path = "src/lib.rs"
 [dependencies]
 dup-crypto = { path = "../../crypto" }
 dubp-currency-params = { path = "../../dubp/currency-params" }
-dubp-documents = { path = "../../dubp/documents" }
+dubp-user-docs = { path = "../../dubp/user-docs" }
 durs-common-tools = { path = "../../tools/common-tools" }
 durs-network-documents = { path = "../../dunp/network-documents" }
 failure = "0.1.5"
diff --git a/lib/core/network/Cargo.toml b/lib/core/network/Cargo.toml
index 448287c6..534087f2 100644
--- a/lib/core/network/Cargo.toml
+++ b/lib/core/network/Cargo.toml
@@ -10,8 +10,9 @@ edition = "2018"
 path = "lib.rs"
 
 [dependencies]
+dubp-block-doc = { path = "../../dubp/block-doc"} #, version = "0.1.0" }
 dubp-common-doc = { path = "../../dubp/common-doc"} #, version = "0.1.0" }
-dubp-documents= { path = "../../dubp/documents" }
+dubp-user-docs= { path = "../../dubp/user-docs" }
 dup-crypto = { path = "../../crypto" }
 durs-common-tools = { path = "../../tools/common-tools" }
 durs-module = { path = "../module" }
diff --git a/lib/core/network/events.rs b/lib/core/network/events.rs
index 954ed019..12df5249 100644
--- a/lib/core/network/events.rs
+++ b/lib/core/network/events.rs
@@ -18,9 +18,9 @@
 use crate::network_head::NetworkHead;
 use crate::network_peer::PeerCard;
 use crate::NodeFullId;
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::blockstamp::Blockstamp;
-use dubp_documents::documents::block::BlockDocument;
-use dubp_documents::documents::UserDocumentDUBP;
+use dubp_user_docs::documents::UserDocumentDUBP;
 use durs_common_tools::Percent;
 
 #[derive(Debug, Clone)]
diff --git a/lib/core/network/requests.rs b/lib/core/network/requests.rs
index 0dad6800..ac7b1c87 100644
--- a/lib/core/network/requests.rs
+++ b/lib/core/network/requests.rs
@@ -16,9 +16,9 @@
 //! Defined network requests.
 
 use crate::*;
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::blockstamp::Blockstamp;
-use dubp_documents::documents::block::BlockDocument;
-use dubp_documents::documents::UserDocumentDUBP;
+use dubp_user_docs::documents::UserDocumentDUBP;
 
 #[derive(Debug, Copy, Clone)]
 /// Type containing a request addressed to the network module
diff --git a/lib/dubp/block-doc/Cargo.toml b/lib/dubp/block-doc/Cargo.toml
new file mode 100644
index 00000000..750f9a39
--- /dev/null
+++ b/lib/dubp/block-doc/Cargo.toml
@@ -0,0 +1,35 @@
+[package]
+name = "dubp-block-doc"
+version = "0.1.0"
+authors = ["elois <elois@ifee.fr>"]
+description = "Handles DUBP block (DUBP: DUniter Blockhain Protocol)."
+repository = "https://git.duniter.org/nodes/rust/duniter-rs"
+readme = "README.md"
+keywords = ["dunitrust", "duniter", "blockchain", "cryptocurrency", "block"]
+license = "AGPL-3.0"
+edition = "2018"
+
+[lib]
+path = "src/lib.rs"
+
+[dependencies]
+dubp-common-doc = { path = "../common-doc"} #, version = "0.1.0" }
+dubp-currency-params = { path = "../currency-params", version = "0.2.0" }
+dubp-user-docs = { path = "../user-docs", version = "0.14.0" }
+dup-crypto = { path = "../../crypto", version = "0.7.0" }
+durs-common-tools = { path = "../../tools/common-tools", version = "0.2.0" }
+failure = "0.1.5"
+json-pest-parser = { path = "../../tools/json-pest-parser", version = "0.2.0" }
+pest = "2.1.0"
+pest_derive = "2.1.0"
+serde = "1.0.*"
+serde_derive = "1.0.*"
+serde_json = "1.0.*"
+log = "0.4.*"
+unwrap = "1.2.1"
+
+[dev-dependencies]
+pretty_assertions = "0.5.1"
+dubp-user-docs-tests-tools = { path = "../../tests-tools/user-docs-tests-tools" }
+
+[features]
\ No newline at end of file
diff --git a/lib/dubp/block-doc/README.md b/lib/dubp/block-doc/README.md
new file mode 100644
index 00000000..5e2e488c
--- /dev/null
+++ b/lib/dubp/block-doc/README.md
@@ -0,0 +1,9 @@
+# DUBP block doc
+
+This crate provides the definition of the blocks format in [DUBP](dubp-latest-rfc) as well as the methods to manipulate them.
+
+[dubp-latest-rfc]: https://git.duniter.org/nodes/common/doc/blob/master/rfc/0009_Duniter_Blockchain_Protocol_V11.md
+
+## How to use it
+
+You can add `dubp-block-doc` as a `cargo` dependency in your Rust project.
diff --git a/lib/dubp/documents/src/documents/block.rs b/lib/dubp/block-doc/src/block.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/block.rs
rename to lib/dubp/block-doc/src/block.rs
diff --git a/lib/dubp/documents/src/documents/block/v10.rs b/lib/dubp/block-doc/src/block/v10.rs
similarity index 97%
rename from lib/dubp/documents/src/documents/block/v10.rs
rename to lib/dubp/block-doc/src/block/v10.rs
index 73832fce..43b343ac 100644
--- a/lib/dubp/documents/src/documents/block/v10.rs
+++ b/lib/dubp/block-doc/src/block/v10.rs
@@ -16,19 +16,22 @@
 //! Wrappers around Block document V10.
 
 use super::{BlockDocumentTrait, VerifyBlockHashError};
-use crate::documents::certification::v10::CompactCertificationDocumentV10Stringified;
-use crate::documents::identity::IdentityDocumentV10;
-use crate::documents::membership::v10::{MembershipDocumentV10, MembershipDocumentV10Stringified};
-use crate::documents::revocation::v10::CompactRevocationDocumentV10Stringified;
-use crate::documents::revocation::RevocationDocumentV10;
-use crate::documents::transaction::TransactionDocument;
-use crate::documents::*;
 use dubp_common_doc::blockstamp::Blockstamp;
 use dubp_common_doc::traits::text::*;
 use dubp_common_doc::traits::{Document, ToStringObject};
 use dubp_common_doc::{BlockHash, BlockNumber};
 use dubp_currency_params::genesis_block_params::v10::BlockV10Parameters;
 use dubp_currency_params::CurrencyName;
+use dubp_user_docs::documents::certification::v10::{
+    CertificationDocumentV10, CompactCertificationDocumentV10Stringified,
+};
+use dubp_user_docs::documents::identity::{IdentityDocumentV10, IdentityDocumentV10Stringified};
+use dubp_user_docs::documents::membership::v10::{
+    MembershipDocumentV10, MembershipDocumentV10Stringified,
+};
+use dubp_user_docs::documents::revocation::v10::CompactRevocationDocumentV10Stringified;
+use dubp_user_docs::documents::revocation::RevocationDocumentV10;
+use dubp_user_docs::documents::transaction::{TransactionDocument, TransactionDocumentStringified};
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
 use durs_common_tools::fatal_error;
@@ -620,10 +623,14 @@ impl ToStringObject for BlockDocumentV10 {
 
 #[cfg(test)]
 mod tests {
-    use super::certification::CertificationDocumentParser;
-    use super::transaction::TransactionDocumentParser;
     use super::*;
+    use dubp_common_doc::parser::TextDocumentParser;
     use dubp_common_doc::traits::Document;
+    use dubp_user_docs::documents::certification::{
+        CertificationDocument, CertificationDocumentParser,
+    };
+    use dubp_user_docs::documents::membership::{MembershipDocument, MembershipDocumentParser};
+    use dubp_user_docs::documents::transaction::{TransactionDocument, TransactionDocumentParser};
 
     #[test]
     fn generate_and_verify_empty_block() {
diff --git a/lib/dubp/block-doc/src/lib.rs b/lib/dubp/block-doc/src/lib.rs
new file mode 100644
index 00000000..d668761d
--- /dev/null
+++ b/lib/dubp/block-doc/src/lib.rs
@@ -0,0 +1,77 @@
+//  Copyright (C) 2017-2019  The AXIOM TEAM Association.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+//! Wrappers around Block document.
+
+#![deny(
+    missing_debug_implementations,
+    missing_copy_implementations,
+    trivial_casts,
+    trivial_numeric_casts,
+    unsafe_code,
+    unstable_features,
+    unused_import_braces
+)]
+
+#[macro_use]
+extern crate log;
+#[cfg(test)]
+#[macro_use]
+extern crate pretty_assertions;
+#[macro_use]
+extern crate serde_derive;
+
+pub mod block;
+pub mod parser;
+
+use dubp_common_doc::traits::ToStringObject;
+use dubp_user_docs::documents::{UserDocumentDUBP, UserDocumentDUBPStr};
+
+pub use block::{
+    BlockDocument, BlockDocumentStringified, BlockDocumentV10, BlockDocumentV10Stringified,
+};
+
+/// Document of DUBP (DUniter Blockhain Protocol)
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub enum DocumentDUBP {
+    /// Block document.
+    Block(Box<BlockDocument>),
+    /// User document of DUBP (DUniter Blockhain Protocol)
+    UserDocument(UserDocumentDUBP),
+}
+
+/// List of stringified document types.
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub enum DocumentDUBPStr {
+    /// Block document (not yet implemented)
+    Block(Box<BlockDocumentStringified>),
+    /// Stringified user document.
+    UserDocument(UserDocumentDUBPStr),
+}
+
+impl ToStringObject for DocumentDUBP {
+    type StringObject = DocumentDUBPStr;
+
+    fn to_string_object(&self) -> Self::StringObject {
+        match *self {
+            DocumentDUBP::Block(ref doc) => {
+                DocumentDUBPStr::Block(Box::new(doc.to_string_object()))
+            }
+            DocumentDUBP::UserDocument(ref user_doc) => {
+                DocumentDUBPStr::UserDocument(user_doc.to_string_object())
+            }
+        }
+    }
+}
diff --git a/lib/dubp/documents/src/parsers/blocks.rs b/lib/dubp/block-doc/src/parser.rs
similarity index 94%
rename from lib/dubp/documents/src/parsers/blocks.rs
rename to lib/dubp/block-doc/src/parser.rs
index c7d7f168..83855d97 100644
--- a/lib/dubp/documents/src/parsers/blocks.rs
+++ b/lib/dubp/block-doc/src/parser.rs
@@ -13,13 +13,14 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use crate::documents::block::{v10::TxDocOrTxHash, BlockDocument, BlockDocumentV10};
-use crate::documents::membership::v10::MembershipType;
-use crate::parsers::{serde_json_value_to_pest_json_value, DefaultHasher};
-use crate::*;
+//! Parsers for block.
+
+use crate::block::{v10::TxDocOrTxHash, BlockDocument, BlockDocumentV10};
 use dubp_common_doc::{BlockHash, BlockNumber};
 use dubp_currency_params::genesis_block_params::v10::BlockV10Parameters;
 use dubp_currency_params::CurrencyName;
+use dubp_user_docs::documents::membership::v10::MembershipType;
+use dubp_user_docs::parsers::{serde_json_value_to_pest_json_value, DefaultHasher};
 use dup_crypto::bases::BaseConvertionError;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
@@ -91,26 +92,26 @@ pub fn parse_json_block(json_block: &JSONValue<DefaultHasher>) -> Result<BlockDo
         },
         inner_hash: Some(Hash::from_hex(get_str(json_block, "inner_hash")?)?),
         dividend: get_optional_usize(json_block, "dividend")?,
-        identities: crate::parsers::identities::parse_compact_identities(
+        identities: dubp_user_docs::parsers::identities::parse_compact_identities(
             currency,
             get_str_array(json_block, "identities")?,
         )?,
-        joiners: crate::parsers::memberships::parse_compact_memberships(
+        joiners: dubp_user_docs::parsers::memberships::parse_compact_memberships(
             currency,
             MembershipType::In(),
             &get_str_array(json_block, "joiners")?,
         )?,
-        actives: crate::parsers::memberships::parse_compact_memberships(
+        actives: dubp_user_docs::parsers::memberships::parse_compact_memberships(
             currency,
             MembershipType::In(),
             &get_str_array(json_block, "actives")?,
         )?,
-        leavers: crate::parsers::memberships::parse_compact_memberships(
+        leavers: dubp_user_docs::parsers::memberships::parse_compact_memberships(
             currency,
             MembershipType::Out(),
             &get_str_array(json_block, "leavers")?,
         )?,
-        revoked: crate::parsers::revoked::parse_revocations_into_compact(&get_str_array(
+        revoked: dubp_user_docs::parsers::revoked::parse_revocations_into_compact(&get_str_array(
             json_block, "revoked",
         )?),
         excluded: get_str_array(json_block, "excluded")?
@@ -118,7 +119,7 @@ pub fn parse_json_block(json_block: &JSONValue<DefaultHasher>) -> Result<BlockDo
             .map(|p| ed25519::PublicKey::from_base58(p))
             .map(|p| p.map(PubKey::Ed25519))
             .collect::<Result<Vec<PubKey>, BaseConvertionError>>()?,
-        certifications: crate::parsers::certifications::parse_certifications_into_compact(
+        certifications: dubp_user_docs::parsers::certifications::parse_certifications_into_compact(
             &get_str_array(json_block, "certifications")?,
         ),
         transactions: json_block
@@ -132,7 +133,7 @@ pub fn parse_json_block(json_block: &JSONValue<DefaultHasher>) -> Result<BlockDo
                     .to_owned(),
             })?
             .iter()
-            .map(|tx| crate::parsers::transactions::parse_json_transaction(tx))
+            .map(|tx| dubp_user_docs::parsers::transactions::parse_json_transaction(tx))
             .map(|tx_result| tx_result.map(|tx_doc| TxDocOrTxHash::TxDoc(Box::new(tx_doc))))
             .collect::<Result<Vec<TxDocOrTxHash>, Error>>()?,
     }))
@@ -141,7 +142,7 @@ pub fn parse_json_block(json_block: &JSONValue<DefaultHasher>) -> Result<BlockDo
 #[cfg(test)]
 mod tests {
     use super::*;
-    use crate::documents::block::BlockDocumentTrait;
+    use crate::block::*;
 
     #[test]
     fn parse_empty_json_block() {
@@ -237,8 +238,6 @@ mod tests {
         );
     }
 
-    use crate::documents::block::VerifyBlockHashError;
-
     #[test]
     fn parse_json_block_with_one_tx() -> Result<(), VerifyBlockHashError> {
         let block_json_str = r#"{
@@ -354,7 +353,7 @@ mod tests {
                 revoked: vec![],
                 excluded: vec![],
                 certifications: vec![],
-                transactions: vec![TxDocOrTxHash::TxDoc(Box::new(crate::parsers::tests::first_g1_tx_doc()))],
+                transactions: vec![TxDocOrTxHash::TxDoc(Box::new(dubp_user_docs_tests_tools::mocks::tx::first_g1_tx_doc()))],
             });
         assert_eq!(
             expected_block,
diff --git a/lib/dubp/documents/Cargo.toml b/lib/dubp/user-docs/Cargo.toml
similarity index 90%
rename from lib/dubp/documents/Cargo.toml
rename to lib/dubp/user-docs/Cargo.toml
index 2742315f..bfee1943 100644
--- a/lib/dubp/documents/Cargo.toml
+++ b/lib/dubp/user-docs/Cargo.toml
@@ -1,5 +1,5 @@
 [package]
-name = "dubp-documents"
+name = "dubp-user-docs"
 version = "0.14.0"
 authors = ["nanocryk <nanocryk@duniter.org>", "elois <elois@ifee.fr>"]
 description = "Handles DUBP documents (DUBP: DUniter Blockhain Protocol)"
@@ -14,7 +14,6 @@ path = "src/lib.rs"
 
 [dependencies]
 dubp-common-doc = { path = "../common-doc"} #, version = "0.1.0" }
-dubp-currency-params = { path = "../currency-params", version = "0.2.0" }
 dup-crypto = { path = "../../crypto", version = "0.7.0" }
 durs-common-tools = { path = "../../tools/common-tools", version = "0.2.0" }
 failure = "0.1.5"
diff --git a/lib/dubp/documents/README.md b/lib/dubp/user-docs/README.md
similarity index 100%
rename from lib/dubp/documents/README.md
rename to lib/dubp/user-docs/README.md
diff --git a/lib/dubp/documents/src/documents/certification.rs b/lib/dubp/user-docs/src/documents/certification.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/certification.rs
rename to lib/dubp/user-docs/src/documents/certification.rs
diff --git a/lib/dubp/documents/src/documents/certification/v10.rs b/lib/dubp/user-docs/src/documents/certification/v10.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/certification/v10.rs
rename to lib/dubp/user-docs/src/documents/certification/v10.rs
diff --git a/lib/dubp/documents/src/documents/identity.rs b/lib/dubp/user-docs/src/documents/identity.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/identity.rs
rename to lib/dubp/user-docs/src/documents/identity.rs
diff --git a/lib/dubp/documents/src/documents/identity/v10.rs b/lib/dubp/user-docs/src/documents/identity/v10.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/identity/v10.rs
rename to lib/dubp/user-docs/src/documents/identity/v10.rs
diff --git a/lib/dubp/documents/src/documents/membership.rs b/lib/dubp/user-docs/src/documents/membership.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/membership.rs
rename to lib/dubp/user-docs/src/documents/membership.rs
diff --git a/lib/dubp/documents/src/documents/membership/v10.rs b/lib/dubp/user-docs/src/documents/membership/v10.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/membership/v10.rs
rename to lib/dubp/user-docs/src/documents/membership/v10.rs
diff --git a/lib/dubp/documents/src/documents/mod.rs b/lib/dubp/user-docs/src/documents/mod.rs
similarity index 92%
rename from lib/dubp/documents/src/documents/mod.rs
rename to lib/dubp/user-docs/src/documents/mod.rs
index 16d48f81..ac5cb1a2 100644
--- a/lib/dubp/documents/src/documents/mod.rs
+++ b/lib/dubp/user-docs/src/documents/mod.rs
@@ -15,7 +15,6 @@
 
 //! Implements the Dunitrust blockchain Documents.
 
-use crate::documents::block::*;
 use crate::documents::certification::*;
 use crate::documents::identity::*;
 use crate::documents::membership::*;
@@ -27,22 +26,12 @@ use durs_common_tools::fatal_error;
 use pest::iterators::Pair;
 use pest::Parser;
 
-pub mod block;
 pub mod certification;
 pub mod identity;
 pub mod membership;
 pub mod revocation;
 pub mod transaction;
 
-/// Document of DUBP (DUniter Blockhain Protocol)
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub enum DocumentDUBP {
-    /// Block document.
-    Block(Box<BlockDocument>),
-    /// User document of DUBP (DUniter Blockhain Protocol)
-    UserDocument(UserDocumentDUBP),
-}
-
 /// User document of DUBP (DUniter Blockhain Protocol)
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub enum UserDocumentDUBP {
@@ -62,15 +51,6 @@ pub enum UserDocumentDUBP {
     Revocation(Box<RevocationDocument>),
 }
 
-/// List of stringified document types.
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub enum DocumentDUBPStr {
-    /// Block document (not yet implemented)
-    Block(Box<BlockDocumentStringified>),
-    /// Stringified user document.
-    UserDocument(UserDocumentDUBPStr),
-}
-
 /// List of stringified user document types.
 #[derive(Debug, Clone, Serialize, Deserialize)]
 pub enum UserDocumentDUBPStr {
@@ -90,21 +70,6 @@ pub enum UserDocumentDUBPStr {
     Revocation(Box<RevocationDocumentStringified>),
 }
 
-impl ToStringObject for DocumentDUBP {
-    type StringObject = DocumentDUBPStr;
-
-    fn to_string_object(&self) -> Self::StringObject {
-        match *self {
-            DocumentDUBP::Block(ref doc) => {
-                DocumentDUBPStr::Block(Box::new(doc.to_string_object()))
-            }
-            DocumentDUBP::UserDocument(ref user_doc) => {
-                DocumentDUBPStr::UserDocument(user_doc.to_string_object())
-            }
-        }
-    }
-}
-
 impl ToStringObject for UserDocumentDUBP {
     type StringObject = UserDocumentDUBPStr;
 
diff --git a/lib/dubp/documents/src/documents/revocation.rs b/lib/dubp/user-docs/src/documents/revocation.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/revocation.rs
rename to lib/dubp/user-docs/src/documents/revocation.rs
diff --git a/lib/dubp/documents/src/documents/revocation/v10.rs b/lib/dubp/user-docs/src/documents/revocation/v10.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/revocation/v10.rs
rename to lib/dubp/user-docs/src/documents/revocation/v10.rs
diff --git a/lib/dubp/documents/src/documents/transaction.rs b/lib/dubp/user-docs/src/documents/transaction.rs
similarity index 100%
rename from lib/dubp/documents/src/documents/transaction.rs
rename to lib/dubp/user-docs/src/documents/transaction.rs
diff --git a/lib/dubp/documents/src/lib.rs b/lib/dubp/user-docs/src/lib.rs
similarity index 100%
rename from lib/dubp/documents/src/lib.rs
rename to lib/dubp/user-docs/src/lib.rs
diff --git a/lib/dubp/documents/src/parsers/certifications.rs b/lib/dubp/user-docs/src/parsers/certifications.rs
similarity index 100%
rename from lib/dubp/documents/src/parsers/certifications.rs
rename to lib/dubp/user-docs/src/parsers/certifications.rs
diff --git a/lib/dubp/documents/src/parsers/identities.rs b/lib/dubp/user-docs/src/parsers/identities.rs
similarity index 100%
rename from lib/dubp/documents/src/parsers/identities.rs
rename to lib/dubp/user-docs/src/parsers/identities.rs
diff --git a/lib/dubp/documents/src/parsers/memberships.rs b/lib/dubp/user-docs/src/parsers/memberships.rs
similarity index 100%
rename from lib/dubp/documents/src/parsers/memberships.rs
rename to lib/dubp/user-docs/src/parsers/memberships.rs
diff --git a/lib/dubp/documents/src/parsers/mod.rs b/lib/dubp/user-docs/src/parsers/mod.rs
similarity index 57%
rename from lib/dubp/documents/src/parsers/mod.rs
rename to lib/dubp/user-docs/src/parsers/mod.rs
index c9b80fb0..5cadf3d8 100644
--- a/lib/dubp/documents/src/parsers/mod.rs
+++ b/lib/dubp/user-docs/src/parsers/mod.rs
@@ -13,9 +13,6 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-/// Parsers for block
-pub mod blocks;
-
 /// Parsers for certifications
 pub mod certifications;
 
@@ -35,13 +32,16 @@ use json_pest_parser::{JSONValue, Number};
 use serde_json::Value;
 use std::collections::HashMap;
 
-type DefaultHasher = std::hash::BuildHasherDefault<std::collections::hash_map::DefaultHasher>;
+/// Default hasher
+pub type DefaultHasher = std::hash::BuildHasherDefault<std::collections::hash_map::DefaultHasher>;
 
 #[derive(Copy, Clone, Debug, Fail)]
 #[fail(display = "Fail to convert serde_json::Value into json_pest_parser::JSONValue")]
-struct JsonValueConversionError;
+/// Error on conversion of serde_json value into pest_json value
+pub struct JsonValueConversionError;
 
-fn serde_json_value_to_pest_json_value(
+/// Convert serde_json value into pest_json value
+pub fn serde_json_value_to_pest_json_value(
     value: &Value,
 ) -> Result<JSONValue<DefaultHasher>, JsonValueConversionError> {
     match value {
@@ -77,50 +77,3 @@ fn serde_json_value_to_pest_json_value(
 
 //std::collections::HashMap<&str, json_pest_parser::JSONValue<'_, std::hash::BuildHasherDefault<std::collections::hash_map::DefaultHasher>>>
 //std::iter::Iterator<Item=(&std::string::String, json_pest_parser::JSONValue<'_, std::hash::BuildHasherDefault<std::collections::hash_map::DefaultHasher>>)>
-
-#[cfg(test)]
-mod tests {
-    use crate::documents::transaction::*;
-    use dubp_common_doc::traits::DocumentBuilder;
-    use dubp_common_doc::Blockstamp;
-    use dup_crypto::keys::*;
-    use std::str::FromStr;
-
-    pub fn first_g1_tx_doc() -> TransactionDocument {
-        let expected_tx_builder = TransactionDocumentBuilder {
-            currency: &"g1",
-            blockstamp: &Blockstamp::from_string(
-                "50-00001DAA4559FEDB8320D1040B0F22B631459F36F237A0D9BC1EB923C12A12E7",
-            )
-            .expect("Fail to parse blockstamp"),
-            locktime: &0,
-            issuers: &vec![PubKey::Ed25519(
-                ed25519::PublicKey::from_base58("2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ")
-                    .expect("Fail to parse issuer !"),
-            )],
-            inputs: &vec![TransactionInput::from_str(
-                "1000:0:D:2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ:1",
-            )
-            .expect("Fail to parse inputs")],
-            unlocks: &vec![
-                TransactionInputUnlocks::from_str("0:SIG(0)").expect("Fail to parse unlocks")
-            ],
-            outputs: &vec![
-                TransactionOutput::from_str(
-                    "1:0:SIG(Com8rJukCozHZyFao6AheSsfDQdPApxQRnz7QYFf64mm)",
-                )
-                .expect("Fail to parse outputs"),
-                TransactionOutput::from_str(
-                    "999:0:SIG(2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ)",
-                )
-                .expect("Fail to parse outputs"),
-            ],
-            comment: "TEST",
-            hash: None,
-        };
-
-        expected_tx_builder.build_with_signature(vec![Sig::Ed25519(
-                ed25519::Signature::from_base64("fAH5Gor+8MtFzQZ++JaJO6U8JJ6+rkqKtPrRr/iufh3MYkoDGxmjzj6jCADQL+hkWBt8y8QzlgRkz0ixBcKHBw==").expect("Fail to parse sig !")
-            )])
-    }
-}
diff --git a/lib/dubp/documents/src/parsers/revoked.rs b/lib/dubp/user-docs/src/parsers/revoked.rs
similarity index 100%
rename from lib/dubp/documents/src/parsers/revoked.rs
rename to lib/dubp/user-docs/src/parsers/revoked.rs
diff --git a/lib/dubp/documents/src/parsers/transactions.rs b/lib/dubp/user-docs/src/parsers/transactions.rs
similarity index 70%
rename from lib/dubp/documents/src/parsers/transactions.rs
rename to lib/dubp/user-docs/src/parsers/transactions.rs
index ba282dd6..7d6f5e71 100644
--- a/lib/dubp/documents/src/parsers/transactions.rs
+++ b/lib/dubp/user-docs/src/parsers/transactions.rs
@@ -86,9 +86,50 @@ pub fn parse_json_transaction(
 #[cfg(test)]
 mod tests {
     use super::*;
+    use dubp_common_doc::traits::DocumentBuilder;
+    use dubp_common_doc::Blockstamp;
+    use std::str::FromStr;
+
+    pub fn first_g1_tx_doc() -> TransactionDocument {
+        let expected_tx_builder = TransactionDocumentBuilder {
+            currency: &"g1",
+            blockstamp: &Blockstamp::from_string(
+                "50-00001DAA4559FEDB8320D1040B0F22B631459F36F237A0D9BC1EB923C12A12E7",
+            )
+            .expect("Fail to parse blockstamp"),
+            locktime: &0,
+            issuers: &vec![PubKey::Ed25519(
+                ed25519::PublicKey::from_base58("2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ")
+                    .expect("Fail to parse issuer !"),
+            )],
+            inputs: &vec![TransactionInput::from_str(
+                "1000:0:D:2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ:1",
+            )
+            .expect("Fail to parse inputs")],
+            unlocks: &vec![
+                TransactionInputUnlocks::from_str("0:SIG(0)").expect("Fail to parse unlocks")
+            ],
+            outputs: &vec![
+                TransactionOutput::from_str(
+                    "1:0:SIG(Com8rJukCozHZyFao6AheSsfDQdPApxQRnz7QYFf64mm)",
+                )
+                .expect("Fail to parse outputs"),
+                TransactionOutput::from_str(
+                    "999:0:SIG(2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ)",
+                )
+                .expect("Fail to parse outputs"),
+            ],
+            comment: "TEST",
+            hash: None,
+        };
+
+        expected_tx_builder.build_with_signature(vec![Sig::Ed25519(
+                ed25519::Signature::from_base64("fAH5Gor+8MtFzQZ++JaJO6U8JJ6+rkqKtPrRr/iufh3MYkoDGxmjzj6jCADQL+hkWBt8y8QzlgRkz0ixBcKHBw==").expect("Fail to parse sig !")
+            )])
+    }
 
     #[test]
-    fn parse_empty_json_block() {
+    fn test_parse_json_tx() {
         let tx_json_str = r#"{
      "version": 10,
      "currency": "g1",
@@ -120,7 +161,7 @@ mod tests {
             json_pest_parser::parse_json_string(tx_json_str).expect("Fail to parse json tx !");
 
         assert_eq!(
-            crate::parsers::tests::first_g1_tx_doc(),
+            first_g1_tx_doc(),
             parse_json_transaction(&tx_json_value).expect("Fail to parse tx_json_value !")
         );
     }
diff --git a/lib/dunp/network-documents/Cargo.toml b/lib/dunp/network-documents/Cargo.toml
index 1c272107..06a488ba 100644
--- a/lib/dunp/network-documents/Cargo.toml
+++ b/lib/dunp/network-documents/Cargo.toml
@@ -15,7 +15,7 @@ path = "src/lib.rs"
 base58 = "0.1.*"
 dubp-common-doc = { path = "../../dubp/common-doc" } #, version = "0.1.0" }
 dubp-currency-params = { path = "../../dubp/currency-params" }
-dubp-documents= { path = "../../dubp/documents" }
+dubp-user-docs= { path = "../../dubp/user-docs" }
 dup-crypto = { path = "../../crypto" }
 durs-common-tools = { path = "../../tools/common-tools" }
 failure = "0.1.5"
diff --git a/lib/modules/blockchain/blockchain-dal/Cargo.toml b/lib/modules/blockchain/blockchain-dal/Cargo.toml
index f6d40bde..7af736a1 100644
--- a/lib/modules/blockchain/blockchain-dal/Cargo.toml
+++ b/lib/modules/blockchain/blockchain-dal/Cargo.toml
@@ -10,10 +10,11 @@ edition = "2018"
 path = "src/lib.rs"
 
 [dependencies]
+dubp-block-doc = { path = "../../../dubp/block-doc"} #, version = "0.1.0" }
 dubp-common-doc = { path = "../../../dubp/common-doc"} #, version = "0.1.0" }
 dup-crypto = { path = "../../../crypto" }
 dubp-currency-params = { path = "../../../dubp/currency-params" }
-dubp-documents= { path = "../../../dubp/documents" }
+dubp-user-docs= { path = "../../../dubp/user-docs" }
 durs-conf = { path = "../../../core/conf" }
 durs-module = { path = "../../../core/module" }
 durs-common-tools = { path = "../../../tools/common-tools" }
@@ -29,7 +30,7 @@ unwrap = "1.2.1"
 
 [dev-dependencies]
 dup-crypto-tests-tools = { path = "../../../tests-tools/crypto-tests-tools" }
-dubp-documents-tests-tools = { path = "../../../tests-tools/documents-tests-tools" }
+dubp-user-docs-tests-tools = { path = "../../../tests-tools/user-docs-tests-tools" }
 durs-common-tests-tools = { path = "../../../tests-tools/common-tests-tools" }
 
 [features]
diff --git a/lib/modules/blockchain/blockchain-dal/src/entities/block.rs b/lib/modules/blockchain/blockchain-dal/src/entities/block.rs
index 059260fe..e93bdd72 100644
--- a/lib/modules/blockchain/blockchain-dal/src/entities/block.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/entities/block.rs
@@ -14,9 +14,9 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::*;
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::BlockNumber;
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait};
 use durs_wot::NodeId;
 use std::collections::HashMap;
 
diff --git a/lib/modules/blockchain/blockchain-dal/src/entities/fork_tree.rs b/lib/modules/blockchain/blockchain-dal/src/entities/fork_tree.rs
index 69abeffe..7c27bfea 100644
--- a/lib/modules/blockchain/blockchain-dal/src/entities/fork_tree.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/entities/fork_tree.rs
@@ -533,7 +533,7 @@ mod tests {
         // Fill tree with 10 nodes
         let mut tree = ForkTree::default();
         let blockstamps: Vec<Blockstamp> =
-            dubp_documents_tests_tools::mocks::generate_blockstamps(10);
+            dubp_user_docs_tests_tools::mocks::generate_blockstamps(10);
         tree.insert_new_node(blockstamps[0], None, true);
         for i in 1..10 {
             tree.insert_new_node(blockstamps[i], Some(TreeNodeId(i - 1)), true);
@@ -620,7 +620,7 @@ mod tests {
     fn insert_more_fork_window_size_nodes() {
         let mut tree = ForkTree::default();
         let blockstamps: Vec<Blockstamp> =
-            dubp_documents_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2);
+            dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2);
 
         // Fill tree with MAX_DEPTH nodes
         tree.insert_new_node(blockstamps[0], None, true);
@@ -657,7 +657,7 @@ mod tests {
     fn test_change_main_branch() {
         let mut tree = ForkTree::default();
         let blockstamps: Vec<Blockstamp> =
-            dubp_documents_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2);
+            dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2);
 
         // Fill tree with MAX_DEPTH nodes
         tree.insert_new_node(blockstamps[0], None, true);
diff --git a/lib/modules/blockchain/blockchain-dal/src/entities/identity.rs b/lib/modules/blockchain/blockchain-dal/src/entities/identity.rs
index 6bc7d8f6..ab1e1e43 100644
--- a/lib/modules/blockchain/blockchain-dal/src/entities/identity.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/entities/identity.rs
@@ -14,7 +14,7 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use dubp_common_doc::{BlockNumber, Blockstamp};
-use dubp_documents::documents::identity::IdentityDocumentV10;
+use dubp_user_docs::documents::identity::IdentityDocumentV10;
 use durs_wot::NodeId;
 
 #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq, Hash)]
diff --git a/lib/modules/blockchain/blockchain-dal/src/entities/sources.rs b/lib/modules/blockchain/blockchain-dal/src/entities/sources.rs
index defd3a43..0e059ecc 100644
--- a/lib/modules/blockchain/blockchain-dal/src/entities/sources.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/entities/sources.rs
@@ -14,7 +14,7 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use dubp_common_doc::BlockNumber;
-use dubp_documents::documents::transaction::*;
+use dubp_user_docs::documents::transaction::*;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::PubKey;
 use durs_common_tools::fatal_error;
diff --git a/lib/modules/blockchain/blockchain-dal/src/lib.rs b/lib/modules/blockchain/blockchain-dal/src/lib.rs
index 5057cf08..d2f4c9b1 100644
--- a/lib/modules/blockchain/blockchain-dal/src/lib.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/lib.rs
@@ -52,7 +52,7 @@ pub mod tools;
 pub mod writers;
 
 use dubp_common_doc::{BlockNumber, Blockstamp, PreviousBlockstamp};
-use dubp_documents::documents::transaction::*;
+use dubp_user_docs::documents::transaction::*;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
 use durs_common_tools::fatal_error;
diff --git a/lib/modules/blockchain/blockchain-dal/src/readers/block.rs b/lib/modules/blockchain/blockchain-dal/src/readers/block.rs
index 670467af..034b15e7 100644
--- a/lib/modules/blockchain/blockchain-dal/src/readers/block.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/readers/block.rs
@@ -14,9 +14,9 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::*;
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::{BlockHash, BlockNumber, Blockstamp};
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait};
 use dup_crypto::keys::*;
 use std::collections::HashMap;
 use unwrap::unwrap;
diff --git a/lib/modules/blockchain/blockchain-dal/src/readers/currency_params.rs b/lib/modules/blockchain/blockchain-dal/src/readers/currency_params.rs
index bf047f0d..70aa7f53 100644
--- a/lib/modules/blockchain/blockchain-dal/src/readers/currency_params.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/readers/currency_params.rs
@@ -14,11 +14,11 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::*;
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait};
 use dubp_common_doc::traits::Document;
 use dubp_currency_params::db::write_currency_params;
 use dubp_currency_params::genesis_block_params::GenesisBlockParams;
 use dubp_currency_params::CurrencyParameters;
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait};
 use unwrap::unwrap;
 
 /// Get and write currency params
diff --git a/lib/modules/blockchain/blockchain-dal/src/readers/identity.rs b/lib/modules/blockchain/blockchain-dal/src/readers/identity.rs
index 04db9db5..78539356 100644
--- a/lib/modules/blockchain/blockchain-dal/src/readers/identity.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/readers/identity.rs
@@ -132,7 +132,7 @@ mod test {
             joined_on: Blockstamp::default(),
             expired_on: None,
             revoked_on: None,
-            idty_doc: dubp_documents_tests_tools::mocks::identity::gen_mock_idty(
+            idty_doc: dubp_user_docs_tests_tools::mocks::identity::gen_mock_idty(
                 pubkey,
                 created_block_id,
             ),
diff --git a/lib/modules/blockchain/blockchain-dal/src/tools.rs b/lib/modules/blockchain/blockchain-dal/src/tools.rs
index 14cfa3a4..c3e3286a 100644
--- a/lib/modules/blockchain/blockchain-dal/src/tools.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/tools.rs
@@ -14,7 +14,7 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::entities::block::DALBlock;
-use dubp_documents::documents::block::BlockDocumentTrait;
+use dubp_block_doc::block::BlockDocumentTrait;
 use dup_crypto::keys::PubKey;
 use durs_common_tools::fatal_error;
 use durs_wot::operations::centrality::{CentralitiesCalculator, UlrikBrandesCentralityCalculator};
diff --git a/lib/modules/blockchain/blockchain-dal/src/writers/block.rs b/lib/modules/blockchain/blockchain-dal/src/writers/block.rs
index c2b9640c..3e8f991d 100644
--- a/lib/modules/blockchain/blockchain-dal/src/writers/block.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/writers/block.rs
@@ -16,8 +16,8 @@
 use crate::entities::block::DALBlock;
 use crate::*;
 use crate::{BinDB, DALError, LocalBlockchainV10Datas};
+use dubp_block_doc::block::BlockDocumentTrait;
 use dubp_common_doc::traits::Document;
-use dubp_documents::documents::block::BlockDocumentTrait;
 use unwrap::unwrap;
 
 /// Insert new head Block in databases
diff --git a/lib/modules/blockchain/blockchain-dal/src/writers/certification.rs b/lib/modules/blockchain/blockchain-dal/src/writers/certification.rs
index 92a6790d..63cd60e4 100644
--- a/lib/modules/blockchain/blockchain-dal/src/writers/certification.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/writers/certification.rs
@@ -16,7 +16,7 @@
 use crate::{BinDB, CertsExpirV10Datas, DALError, IdentitiesV10Datas};
 use dubp_common_doc::BlockNumber;
 use dubp_currency_params::CurrencyParameters;
-use dubp_documents::documents::certification::CompactCertificationDocumentV10;
+use dubp_user_docs::documents::certification::CompactCertificationDocumentV10;
 use dup_crypto::keys::*;
 use durs_wot::NodeId;
 
diff --git a/lib/modules/blockchain/blockchain-dal/src/writers/dividend.rs b/lib/modules/blockchain/blockchain-dal/src/writers/dividend.rs
index 96c6b987..cfeb9b1e 100644
--- a/lib/modules/blockchain/blockchain-dal/src/writers/dividend.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/writers/dividend.rs
@@ -16,7 +16,7 @@
 use crate::entities::sources::SourceAmount;
 use crate::*;
 use dubp_common_doc::BlockNumber;
-use dubp_documents::documents::transaction::*;
+use dubp_user_docs::documents::transaction::*;
 use dup_crypto::keys::PubKey;
 use std::collections::{HashMap, HashSet};
 
diff --git a/lib/modules/blockchain/blockchain-dal/src/writers/fork_tree.rs b/lib/modules/blockchain/blockchain-dal/src/writers/fork_tree.rs
index 7fc62d5d..d95cf6c0 100644
--- a/lib/modules/blockchain/blockchain-dal/src/writers/fork_tree.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/writers/fork_tree.rs
@@ -96,7 +96,7 @@ mod test {
     fn test_insert_new_head_block() -> Result<(), DALError> {
         // Create mock datas
         let blockstamps =
-            dubp_documents_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2);
+            dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 2);
         let fork_tree_db = open_db::<ForksTreeV10Datas>(None, "")?;
 
         // Insert genesis block
@@ -150,7 +150,7 @@ mod test {
     fn test_insert_new_fork_block() -> Result<(), DALError> {
         // Create mock datas
         let blockstamps =
-            dubp_documents_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 3);
+            dubp_user_docs_tests_tools::mocks::generate_blockstamps(*DEFAULT_FORK_WINDOW_SIZE + 3);
         let fork_tree_db = open_db::<ForksTreeV10Datas>(None, "")?;
 
         // Insert 4 main blocks
diff --git a/lib/modules/blockchain/blockchain-dal/src/writers/identity.rs b/lib/modules/blockchain/blockchain-dal/src/writers/identity.rs
index bc3b5c10..b9ed9899 100644
--- a/lib/modules/blockchain/blockchain-dal/src/writers/identity.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/writers/identity.rs
@@ -18,7 +18,7 @@ use crate::{BinDB, DALError, IdentitiesV10Datas, MsExpirV10Datas};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::{BlockNumber, Blockstamp};
 use dubp_currency_params::CurrencyParameters;
-use dubp_documents::documents::identity::IdentityDocumentV10;
+use dubp_user_docs::documents::identity::IdentityDocumentV10;
 use dup_crypto::keys::PubKey;
 use durs_common_tools::fatal_error;
 use durs_wot::NodeId;
diff --git a/lib/modules/blockchain/blockchain-dal/src/writers/requests.rs b/lib/modules/blockchain/blockchain-dal/src/writers/requests.rs
index ca6bf3d2..7ece8baf 100644
--- a/lib/modules/blockchain/blockchain-dal/src/writers/requests.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/writers/requests.rs
@@ -17,11 +17,11 @@ use crate::entities::block::DALBlock;
 use crate::entities::sources::SourceAmount;
 use crate::writers::transaction::DALTxV10;
 use crate::*;
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait};
 use dubp_common_doc::Blockstamp;
 use dubp_currency_params::CurrencyParameters;
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait};
-use dubp_documents::documents::certification::CompactCertificationDocumentV10;
-use dubp_documents::documents::identity::IdentityDocumentV10;
+use dubp_user_docs::documents::certification::CompactCertificationDocumentV10;
+use dubp_user_docs::documents::identity::IdentityDocumentV10;
 use dup_crypto::keys::PubKey;
 use durs_wot::NodeId;
 use std::ops::Deref;
diff --git a/lib/modules/blockchain/blockchain-dal/src/writers/transaction.rs b/lib/modules/blockchain/blockchain-dal/src/writers/transaction.rs
index 12e5d1e0..3800696e 100644
--- a/lib/modules/blockchain/blockchain-dal/src/writers/transaction.rs
+++ b/lib/modules/blockchain/blockchain-dal/src/writers/transaction.rs
@@ -13,7 +13,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-use dubp_documents::documents::transaction::*;
+use dubp_user_docs::documents::transaction::*;
 use durs_common_tools::fatal_error;
 
 use crate::entities::sources::{SourceAmount, SourceIndexV10, UTXOIndexV10, UTXOV10};
diff --git a/lib/modules/blockchain/blockchain/Cargo.toml b/lib/modules/blockchain/blockchain/Cargo.toml
index 4dd46f12..24c25ab3 100644
--- a/lib/modules/blockchain/blockchain/Cargo.toml
+++ b/lib/modules/blockchain/blockchain/Cargo.toml
@@ -12,11 +12,12 @@ path = "src/lib.rs"
 [dependencies]
 dirs = "1.0.2"
 durs-conf = { path = "../../../core/conf" }
+dubp-block-doc = { path = "../../../dubp/block-doc"} #, version = "0.1.0" }
 dubp-common-doc = { path = "../../../dubp/common-doc"} #, version = "0.1.0" }
 dubp-currency-params = { path = "../../../dubp/currency-params" }
 durs-blockchain-dal = { path = "../blockchain-dal" }
 dup-crypto = { path = "../../../crypto" }
-dubp-documents= { path = "../../../dubp/documents" }
+dubp-user-docs= { path = "../../../dubp/user-docs" }
 durs-common-tools = { path = "../../../tools/common-tools" }
 durs-network-documents = { path = "../../../dunp/network-documents" }
 durs-message =  { path = "../../../core/message" }
@@ -36,4 +37,4 @@ unwrap = "1.2.1"
 
 [dev-dependencies]
 dup-crypto-tests-tools = { path = "../../../tests-tools/crypto-tests-tools" }
-dubp-documents-tests-tools = { path = "../../../tests-tools/documents-tests-tools" }
\ No newline at end of file
+dubp-user-docs-tests-tools = { path = "../../../tests-tools/user-docs-tests-tools" }
\ No newline at end of file
diff --git a/lib/modules/blockchain/blockchain/src/dbex.rs b/lib/modules/blockchain/blockchain/src/dbex.rs
index 24c8cc07..3d55dbb4 100644
--- a/lib/modules/blockchain/blockchain/src/dbex.rs
+++ b/lib/modules/blockchain/blockchain/src/dbex.rs
@@ -14,9 +14,9 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::*;
+use dubp_block_doc::block::BlockDocumentTrait;
 use dubp_common_doc::BlockNumber;
-use dubp_documents::documents::block::BlockDocumentTrait;
-use dubp_documents::documents::transaction::*;
+use dubp_user_docs::documents::transaction::*;
 use dup_crypto::keys::*;
 use durs_wot::data::rusty::RustyWebOfTrust;
 use durs_wot::data::WebOfTrust;
diff --git a/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs b/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs
index 797f03b2..1ecda1f8 100644
--- a/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs
+++ b/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs
@@ -15,10 +15,10 @@
 
 //! Sub-module that applies the content of a block to the indexes of the local blockchain.
 
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait, BlockDocumentV10};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::BlockNumber;
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait, BlockDocumentV10};
-use dubp_documents::documents::transaction::{TxAmount, TxBase};
+use dubp_user_docs::documents::transaction::{TxAmount, TxBase};
 use dup_crypto::keys::*;
 use durs_blockchain_dal::entities::block::DALBlock;
 use durs_blockchain_dal::entities::sources::SourceAmount;
diff --git a/lib/modules/blockchain/blockchain/src/dubp/check/hashs.rs b/lib/modules/blockchain/blockchain/src/dubp/check/hashs.rs
index d8b7a054..f6b46730 100644
--- a/lib/modules/blockchain/blockchain/src/dubp/check/hashs.rs
+++ b/lib/modules/blockchain/blockchain/src/dubp/check/hashs.rs
@@ -15,7 +15,7 @@
 
 //! Verify block inner hash and block hash
 
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait, VerifyBlockHashError};
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait, VerifyBlockHashError};
 
 /// Verify block hashs
 pub fn verify_block_hashs(block_doc: &BlockDocument) -> Result<(), VerifyBlockHashError> {
diff --git a/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs b/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs
index e93eb882..4ad8c269 100644
--- a/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs
+++ b/lib/modules/blockchain/blockchain/src/dubp/check/mod.rs
@@ -18,9 +18,9 @@
 pub mod hashs;
 
 use crate::dubp::BlockError;
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::BlockNumber;
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait};
 use dup_crypto::keys::PubKey;
 use durs_blockchain_dal::*;
 use durs_wot::*;
diff --git a/lib/modules/blockchain/blockchain/src/dubp/mod.rs b/lib/modules/blockchain/blockchain/src/dubp/mod.rs
index 974daff5..5023e3f9 100644
--- a/lib/modules/blockchain/blockchain/src/dubp/mod.rs
+++ b/lib/modules/blockchain/blockchain/src/dubp/mod.rs
@@ -21,9 +21,9 @@ pub mod check;
 use crate::*;
 use apply::*;
 use check::*;
+use dubp_block_doc::block::{BlockDocumentTrait, VerifyBlockHashError};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::{BlockNumber, Blockstamp};
-use dubp_documents::documents::block::{BlockDocumentTrait, VerifyBlockHashError};
 use durs_blockchain_dal::entities::block::DALBlock;
 use durs_blockchain_dal::*;
 use unwrap::unwrap;
diff --git a/lib/modules/blockchain/blockchain/src/dunp/receiver.rs b/lib/modules/blockchain/blockchain/src/dunp/receiver.rs
index d304eb13..3fb479a6 100644
--- a/lib/modules/blockchain/blockchain/src/dunp/receiver.rs
+++ b/lib/modules/blockchain/blockchain/src/dunp/receiver.rs
@@ -18,7 +18,7 @@
 
 use crate::*;
 use dubp_common_doc::traits::Document;
-use dubp_documents::documents::UserDocumentDUBP;
+use dubp_user_docs::documents::UserDocumentDUBP;
 use unwrap::unwrap;
 
 pub fn receive_user_documents(_bc: &mut BlockchainModule, network_documents: &[UserDocumentDUBP]) {
diff --git a/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs b/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs
index 8a8db8e3..b049c1a3 100644
--- a/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs
+++ b/lib/modules/blockchain/blockchain/src/fork/fork_algo.rs
@@ -13,8 +13,8 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use dubp_block_doc::block::BlockDocumentTrait;
 use dubp_common_doc::Blockstamp;
-use dubp_documents::documents::block::BlockDocumentTrait;
 use durs_blockchain_dal::entities::fork_tree::ForkTree;
 use durs_blockchain_dal::{DALError, ForksDBs};
 use std::collections::HashSet;
@@ -100,8 +100,8 @@ mod tests {
 
     use super::*;
     use crate::*;
+    use dubp_block_doc::BlockDocument;
     use dubp_common_doc::{BlockHash, BlockNumber};
-    use dubp_documents::documents::block::BlockDocument;
     use durs_blockchain_dal::entities::block::DALBlock;
 
     #[test]
@@ -118,7 +118,7 @@ mod tests {
 
         // Generate `FORK_WINDOW_SIZE + 2` mock blocks
         let main_branch: Vec<BlockDocument> =
-            dubp_documents_tests_tools::mocks::gen_empty_timed_blocks_v10(
+            dubp_user_docs_tests_tools::mocks::gen_empty_timed_blocks_v10(
                 fork_window_size + 2,
                 0u64,
             );
@@ -156,7 +156,7 @@ mod tests {
         let fork_blocks: Vec<BlockDocument> = (0..3)
             .map(|i| {
                 BlockDocument::V10(
-                    dubp_documents_tests_tools::mocks::gen_empty_timed_block_v10(
+                    dubp_user_docs_tests_tools::mocks::gen_empty_timed_block_v10(
                         Blockstamp {
                             id: BlockNumber(fork_point.number().0 + i + 1),
                             hash: BlockHash(dup_crypto_tests_tools::mocks::hash('A')),
@@ -203,7 +203,7 @@ mod tests {
                 &forks_dbs,
                 DALBlock {
                     block: BlockDocument::V10(
-                        dubp_documents_tests_tools::mocks::gen_empty_timed_block_v10(
+                        dubp_user_docs_tests_tools::mocks::gen_empty_timed_block_v10(
                             determining_blockstamp,
                             *ADVANCE_TIME,
                             dup_crypto_tests_tools::mocks::hash('A'),
@@ -235,7 +235,7 @@ mod tests {
         let new_main_blocks: Vec<BlockDocument> = (0..7)
             .map(|i| {
                 BlockDocument::V10(
-                    dubp_documents_tests_tools::mocks::gen_empty_timed_block_v10(
+                    dubp_user_docs_tests_tools::mocks::gen_empty_timed_block_v10(
                         Blockstamp {
                             id: BlockNumber(fork_point.number().0 + i + 1),
                             hash: BlockHash(dup_crypto_tests_tools::mocks::hash('B')),
diff --git a/lib/modules/blockchain/blockchain/src/fork/revert_block.rs b/lib/modules/blockchain/blockchain/src/fork/revert_block.rs
index 47924b69..a7d08b00 100644
--- a/lib/modules/blockchain/blockchain/src/fork/revert_block.rs
+++ b/lib/modules/blockchain/blockchain/src/fork/revert_block.rs
@@ -15,11 +15,11 @@
 
 //! Sub-module that applies a block backwards.
 
+use dubp_block_doc::block::v10::TxDocOrTxHash;
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait, BlockDocumentV10};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::{BlockNumber, Blockstamp};
-use dubp_documents::documents::block::v10::TxDocOrTxHash;
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait, BlockDocumentV10};
-use dubp_documents::documents::transaction::{TxAmount, TxBase};
+use dubp_user_docs::documents::transaction::{TxAmount, TxBase};
 use dup_crypto::keys::*;
 use durs_blockchain_dal::entities::block::DALBlock;
 use durs_blockchain_dal::entities::sources::SourceAmount;
diff --git a/lib/modules/blockchain/blockchain/src/fork/stackable_blocks.rs b/lib/modules/blockchain/blockchain/src/fork/stackable_blocks.rs
index 1628a282..8f0e348b 100644
--- a/lib/modules/blockchain/blockchain/src/fork/stackable_blocks.rs
+++ b/lib/modules/blockchain/blockchain/src/fork/stackable_blocks.rs
@@ -16,8 +16,8 @@
 //! Sub-module that finds and applies the orphaned blocks that have become stackable on the local blockchain.
 
 use crate::*;
+use dubp_block_doc::block::BlockDocumentTrait;
 use dubp_common_doc::traits::Document;
-use dubp_documents::documents::block::BlockDocumentTrait;
 use unwrap::unwrap;
 
 pub fn apply_stackable_blocks(bc: &mut BlockchainModule) {
diff --git a/lib/modules/blockchain/blockchain/src/lib.rs b/lib/modules/blockchain/blockchain/src/lib.rs
index ef8c0802..b28b072c 100644
--- a/lib/modules/blockchain/blockchain/src/lib.rs
+++ b/lib/modules/blockchain/blockchain/src/lib.rs
@@ -54,10 +54,10 @@ pub use crate::dbex::{DBExQuery, DBExTxQuery, DBExWotQuery};
 use crate::dubp::apply::ValidBlockApplyReqs;
 use crate::dubp::*;
 use crate::fork::*;
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::Blockstamp;
 use dubp_currency_params::{CurrencyName, CurrencyParameters};
-use dubp_documents::documents::block::BlockDocument;
 use dup_crypto::keys::*;
 use durs_blockchain_dal::*;
 use durs_common_tools::fatal_error;
diff --git a/lib/modules/blockchain/blockchain/src/requests/received.rs b/lib/modules/blockchain/blockchain/src/requests/received.rs
index 350d320c..00fd40c0 100644
--- a/lib/modules/blockchain/blockchain/src/requests/received.rs
+++ b/lib/modules/blockchain/blockchain/src/requests/received.rs
@@ -16,7 +16,7 @@
 //! Sub-module managing the inter-modules requests received.
 
 use crate::*;
-use dubp_documents::documents::identity::IdentityDocument;
+use dubp_user_docs::documents::identity::IdentityDocument;
 use durs_message::requests::*;
 use durs_module::*;
 
diff --git a/lib/modules/blockchain/blockchain/src/sync/apply/mod.rs b/lib/modules/blockchain/blockchain/src/sync/apply/mod.rs
index 8529764f..449301d3 100644
--- a/lib/modules/blockchain/blockchain/src/sync/apply/mod.rs
+++ b/lib/modules/blockchain/blockchain/src/sync/apply/mod.rs
@@ -21,10 +21,10 @@ use crate::dubp;
 use crate::dubp::apply::apply_valid_block;
 use crate::dubp::apply::ValidBlockApplyReqs;
 use crate::sync::SyncJobsMess;
+use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::{BlockNumber, Blockstamp};
 use dubp_currency_params::{CurrencyName, CurrencyParameters};
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait};
 use dup_crypto::keys::PubKey;
 use durs_blockchain_dal::writers::requests::WotsDBsWriteQuery;
 use durs_blockchain_dal::{BinDB, CertsExpirV10Datas, WotsV10DBs};
diff --git a/lib/modules/blockchain/blockchain/src/sync/download/json_reader_worker.rs b/lib/modules/blockchain/blockchain/src/sync/download/json_reader_worker.rs
index e10df647..a54e6301 100644
--- a/lib/modules/blockchain/blockchain/src/sync/download/json_reader_worker.rs
+++ b/lib/modules/blockchain/blockchain/src/sync/download/json_reader_worker.rs
@@ -14,9 +14,9 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::sync::*;
+use dubp_block_doc::parser::parse_json_block;
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::Blockstamp;
-use dubp_documents::parsers::blocks::parse_json_block;
 use durs_common_tools::fatal_error;
 use failure::Error;
 use rayon::prelude::*;
diff --git a/lib/modules/blockchain/blockchain/src/sync/mod.rs b/lib/modules/blockchain/blockchain/src/sync/mod.rs
index 7fe6c503..69bb7013 100644
--- a/lib/modules/blockchain/blockchain/src/sync/mod.rs
+++ b/lib/modules/blockchain/blockchain/src/sync/mod.rs
@@ -18,10 +18,10 @@ mod download;
 
 use crate::*;
 use apply::BlockApplicator;
+use dubp_block_doc::block::BlockDocumentTrait;
 use dubp_common_doc::Blockstamp;
 use dubp_common_doc::{BlockHash, BlockNumber};
 use dubp_currency_params::{CurrencyName, CurrencyParameters};
-use dubp_documents::documents::block::BlockDocumentTrait;
 use dup_crypto::keys::*;
 use durs_blockchain_dal::writers::requests::*;
 use durs_blockchain_dal::{open_memory_db, CertsExpirV10Datas};
diff --git a/lib/modules/skeleton/Cargo.toml b/lib/modules/skeleton/Cargo.toml
index f6757caf..386d2953 100644
--- a/lib/modules/skeleton/Cargo.toml
+++ b/lib/modules/skeleton/Cargo.toml
@@ -10,7 +10,7 @@ edition = "2018"
 path = "lib.rs"
 
 [dependencies]
-dubp-documents= { path = "../../dubp/documents" }
+dubp-user-docs= { path = "../../dubp/user-docs" }
 durs-conf = { path = "../../core/conf" }
 durs-message =  { path = "../../core/message" }
 durs-module = { path = "../../core/module" }
diff --git a/lib/modules/tui/Cargo.toml b/lib/modules/tui/Cargo.toml
index 8d23e982..6d5803fd 100644
--- a/lib/modules/tui/Cargo.toml
+++ b/lib/modules/tui/Cargo.toml
@@ -13,7 +13,7 @@ path = "lib.rs"
 durs-conf = { path = "../../core/conf" }
 dup-crypto = { path = "../../crypto" }
 dubp-currency-params = { path = "../../dubp/currency-params" }
-dubp-documents= { path = "../../dubp/documents" }
+dubp-user-docs= { path = "../../dubp/user-docs" }
 durs-common-tools = { path = "../../tools/common-tools" }
 durs-message =  { path = "../../core/message" }
 durs-module = { path = "../../core/module" }
diff --git a/lib/modules/ws2p-v1-legacy/Cargo.toml b/lib/modules/ws2p-v1-legacy/Cargo.toml
index e2d923dc..a1bf6243 100644
--- a/lib/modules/ws2p-v1-legacy/Cargo.toml
+++ b/lib/modules/ws2p-v1-legacy/Cargo.toml
@@ -12,9 +12,10 @@ path = "src/lib.rs"
 [dependencies]
 bincode = "1.0.1"
 byteorder = "1.2.3"
+dubp-block-doc = { path = "../../dubp/block-doc"} #, version = "0.1.0" }
 dubp-common-doc = { path = "../../dubp/common-doc"} #, version = "0.1.0" }
 dubp-currency-params = { path = "../../dubp/currency-params" }
-dubp-documents= { path = "../../dubp/documents" }
+dubp-user-docs= { path = "../../dubp/user-docs" }
 dup-crypto = { path = "../../crypto" }
 durs-conf = { path = "../../core/conf" }
 durs-module = { path = "../../core/module" }
diff --git a/lib/modules/ws2p-v1-legacy/src/events/sent.rs b/lib/modules/ws2p-v1-legacy/src/events/sent.rs
index 6711e7ec..2c9fe3ed 100644
--- a/lib/modules/ws2p-v1-legacy/src/events/sent.rs
+++ b/lib/modules/ws2p-v1-legacy/src/events/sent.rs
@@ -17,7 +17,7 @@
 
 use crate::constants;
 use crate::WS2Pv1Module;
-use dubp_documents::documents::UserDocumentDUBP;
+use dubp_user_docs::documents::UserDocumentDUBP;
 use durs_message::events::DursEvent;
 use durs_message::*;
 use durs_module::{ModuleEvent, ModuleStaticName, RouterThreadMessage};
diff --git a/lib/modules/ws2p-v1-legacy/src/lib.rs b/lib/modules/ws2p-v1-legacy/src/lib.rs
index 045561e4..71636015 100644
--- a/lib/modules/ws2p-v1-legacy/src/lib.rs
+++ b/lib/modules/ws2p-v1-legacy/src/lib.rs
@@ -58,10 +58,10 @@ use crate::ws_connections::messages::WS2Pv1Msg;
 use crate::ws_connections::requests::{WS2Pv1ReqBody, WS2Pv1ReqFullId, WS2Pv1ReqId, WS2Pv1Request};
 use crate::ws_connections::states::WS2PConnectionState;
 use crate::ws_connections::*;
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::Blockstamp;
 use dubp_currency_params::CurrencyName;
-use dubp_documents::documents::block::BlockDocument;
-use dubp_documents::documents::UserDocumentDUBP;
+use dubp_user_docs::documents::UserDocumentDUBP;
 use dup_crypto::keys::*;
 use durs_common_tools::fatal_error;
 use durs_common_tools::traits::merge::Merge;
@@ -887,9 +887,9 @@ mod tests {
     use super::*;
     use crate::ws_connections::requests::sent::network_request_to_json;
     use crate::ws_connections::requests::*;
+    use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait};
+    use dubp_block_doc::parser::parse_json_block_from_serde_value;
     use dubp_common_doc::BlockNumber;
-    use dubp_documents::documents::block::{BlockDocument, BlockDocumentTrait};
-    use dubp_documents::parsers::blocks::parse_json_block_from_serde_value;
 
     #[test]
     fn test_parse_json_block() {
diff --git a/lib/modules/ws2p-v1-legacy/src/serializers/block.rs b/lib/modules/ws2p-v1-legacy/src/serializers/block.rs
index 90f4ba8f..6c7b8358 100644
--- a/lib/modules/ws2p-v1-legacy/src/serializers/block.rs
+++ b/lib/modules/ws2p-v1-legacy/src/serializers/block.rs
@@ -16,7 +16,7 @@
 //! Sub-module that serialize BlockDocument into WS2Pv1 json format
 
 use super::IntoWS2Pv1Json;
-use dubp_documents::documents::block::{BlockDocumentStringified, BlockDocumentV10Stringified};
+use dubp_block_doc::block::{BlockDocumentStringified, BlockDocumentV10Stringified};
 
 impl IntoWS2Pv1Json for BlockDocumentStringified {
     fn into_ws2p_v1_json(self) -> serde_json::Value {
diff --git a/lib/modules/ws2p-v1-legacy/src/serializers/certification.rs b/lib/modules/ws2p-v1-legacy/src/serializers/certification.rs
index 76f3d0a4..2c8d47a5 100644
--- a/lib/modules/ws2p-v1-legacy/src/serializers/certification.rs
+++ b/lib/modules/ws2p-v1-legacy/src/serializers/certification.rs
@@ -16,7 +16,7 @@
 //! Sub-module that serialize CompactCertificationDocumentV10Stringified into WS2Pv1 json format
 
 use super::IntoWS2Pv1Json;
-use dubp_documents::documents::certification::v10::CompactCertificationDocumentV10Stringified;
+use dubp_user_docs::documents::certification::v10::CompactCertificationDocumentV10Stringified;
 
 impl IntoWS2Pv1Json for CompactCertificationDocumentV10Stringified {
     fn into_ws2p_v1_json(self) -> serde_json::Value {
diff --git a/lib/modules/ws2p-v1-legacy/src/serializers/identity.rs b/lib/modules/ws2p-v1-legacy/src/serializers/identity.rs
index 43b9da80..3befda13 100644
--- a/lib/modules/ws2p-v1-legacy/src/serializers/identity.rs
+++ b/lib/modules/ws2p-v1-legacy/src/serializers/identity.rs
@@ -16,7 +16,7 @@
 //! Sub-module that serialize IdentityDocumentV10Stringified into WS2Pv1 json format
 
 use super::IntoWS2Pv1Json;
-use dubp_documents::documents::identity::IdentityDocumentV10Stringified;
+use dubp_user_docs::documents::identity::IdentityDocumentV10Stringified;
 
 impl IntoWS2Pv1Json for IdentityDocumentV10Stringified {
     fn into_ws2p_v1_json(self) -> serde_json::Value {
diff --git a/lib/modules/ws2p-v1-legacy/src/serializers/membership.rs b/lib/modules/ws2p-v1-legacy/src/serializers/membership.rs
index 014e4008..b24c9dfe 100644
--- a/lib/modules/ws2p-v1-legacy/src/serializers/membership.rs
+++ b/lib/modules/ws2p-v1-legacy/src/serializers/membership.rs
@@ -16,7 +16,7 @@
 //! Sub-module that serialize MembershipDocumentV10Stringified into WS2Pv1 json format
 
 use super::IntoWS2Pv1Json;
-use dubp_documents::documents::membership::MembershipDocumentV10Stringified;
+use dubp_user_docs::documents::membership::MembershipDocumentV10Stringified;
 
 impl IntoWS2Pv1Json for MembershipDocumentV10Stringified {
     fn into_ws2p_v1_json(self) -> serde_json::Value {
diff --git a/lib/modules/ws2p-v1-legacy/src/serializers/revoked.rs b/lib/modules/ws2p-v1-legacy/src/serializers/revoked.rs
index 74f294fd..5b35e61c 100644
--- a/lib/modules/ws2p-v1-legacy/src/serializers/revoked.rs
+++ b/lib/modules/ws2p-v1-legacy/src/serializers/revoked.rs
@@ -16,7 +16,7 @@
 //! Sub-module that serialize CompactRevocationDocumentV10Stringified into WS2Pv1 json format
 
 use super::IntoWS2Pv1Json;
-use dubp_documents::documents::revocation::CompactRevocationDocumentV10Stringified;
+use dubp_user_docs::documents::revocation::CompactRevocationDocumentV10Stringified;
 
 impl IntoWS2Pv1Json for CompactRevocationDocumentV10Stringified {
     fn into_ws2p_v1_json(self) -> serde_json::Value {
diff --git a/lib/modules/ws2p-v1-legacy/src/serializers/transaction.rs b/lib/modules/ws2p-v1-legacy/src/serializers/transaction.rs
index 5663e574..fce88954 100644
--- a/lib/modules/ws2p-v1-legacy/src/serializers/transaction.rs
+++ b/lib/modules/ws2p-v1-legacy/src/serializers/transaction.rs
@@ -16,7 +16,7 @@
 //! Sub-module that serialize TransactionDocument into WS2Pv1 json format
 
 use super::IntoWS2Pv1Json;
-use dubp_documents::documents::transaction::TransactionDocumentStringified;
+use dubp_user_docs::documents::transaction::TransactionDocumentStringified;
 
 impl IntoWS2Pv1Json for TransactionDocumentStringified {
     fn into_ws2p_v1_json(self) -> serde_json::Value {
diff --git a/lib/modules/ws2p-v1-legacy/src/ws_connections/messages.rs b/lib/modules/ws2p-v1-legacy/src/ws_connections/messages.rs
index 00d6b811..64167849 100644
--- a/lib/modules/ws2p-v1-legacy/src/ws_connections/messages.rs
+++ b/lib/modules/ws2p-v1-legacy/src/ws_connections/messages.rs
@@ -17,7 +17,7 @@
 
 use super::*;
 use crate::ws_connections::requests::WS2Pv1ReqBody;
-use dubp_documents::documents::DocumentDUBP;
+use dubp_block_doc::DocumentDUBP;
 use durs_network_documents::NodeFullId;
 use ws::Message;
 
diff --git a/lib/modules/ws2p-v1-legacy/src/ws_connections/meta_datas.rs b/lib/modules/ws2p-v1-legacy/src/ws_connections/meta_datas.rs
index bb6a692e..d88eca23 100644
--- a/lib/modules/ws2p-v1-legacy/src/ws_connections/meta_datas.rs
+++ b/lib/modules/ws2p-v1-legacy/src/ws_connections/meta_datas.rs
@@ -19,8 +19,8 @@ use super::messages::WS2Pv1MsgPayload;
 use super::states::WS2PConnectionState;
 use crate::ws_connections::requests::{WS2Pv1ReqBody, WS2Pv1ReqId};
 use crate::*;
-use dubp_documents::documents::DocumentDUBP;
-use dubp_documents::parsers::blocks::parse_json_block_from_serde_value;
+use dubp_block_doc::parser::parse_json_block_from_serde_value;
+use dubp_block_doc::DocumentDUBP;
 use dup_crypto::keys::*;
 use durs_network_documents::network_endpoint::{ApiName, EndpointV1};
 use durs_network_documents::NodeId;
diff --git a/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/mod.rs b/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/mod.rs
index a44eea52..a94443cc 100644
--- a/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/mod.rs
+++ b/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/mod.rs
@@ -20,8 +20,8 @@ pub mod sent;
 
 use crate::serializers::IntoWS2Pv1Json;
 use crate::ws_connections::requests::WS2Pv1ReqId;
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::traits::ToStringObject;
-use dubp_documents::documents::block::BlockDocument;
 use dup_crypto::keys::PubKey;
 
 /// WS2Pv1 request response
diff --git a/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/received.rs b/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/received.rs
index 138d6847..bb18e866 100644
--- a/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/received.rs
+++ b/lib/modules/ws2p-v1-legacy/src/ws_connections/responses/received.rs
@@ -16,7 +16,7 @@
 //! Sub-module managing the WS2Pv1 responses received.
 
 use crate::*;
-use dubp_documents::parsers::blocks::parse_json_block_from_serde_value;
+use dubp_block_doc::parser::parse_json_block_from_serde_value;
 use durs_module::ModuleReqFullId;
 use durs_network::requests::*;
 use durs_network_documents::NodeFullId;
diff --git a/lib/modules/ws2p/ws2p-messages/Cargo.toml b/lib/modules/ws2p/ws2p-messages/Cargo.toml
index ea5a66f0..10c9ede8 100644
--- a/lib/modules/ws2p/ws2p-messages/Cargo.toml
+++ b/lib/modules/ws2p/ws2p-messages/Cargo.toml
@@ -13,8 +13,9 @@ path = "lib.rs"
 bincode = "1.0.*"
 byteorder = "1.2.3"
 dubp-common-doc = { path = "../../../dubp/common-doc"} #, version = "0.1.0" }
+dubp-block-doc = { path = "../../../dubp/block-doc"} #, version = "0.1.0" }
 dubp-currency-params = { path = "../../../dubp/currency-params" }
-dubp-documents= { path = "../../../dubp/documents" }
+dubp-user-docs= { path = "../../../dubp/user-docs" }
 durs-network-documents = { path = "../../../dunp/network-documents" }
 durs-common-tools = { path = "../../../tools/common-tools" }
 dup-crypto = { path = "../../../crypto" }
diff --git a/lib/modules/ws2p/ws2p-messages/lib.rs b/lib/modules/ws2p/ws2p-messages/lib.rs
index 97f90c58..71f395ba 100644
--- a/lib/modules/ws2p/ws2p-messages/lib.rs
+++ b/lib/modules/ws2p/ws2p-messages/lib.rs
@@ -160,11 +160,12 @@ impl<'de> BinSignable<'de> for WS2PMessage {
 mod tests {
     use crate::v2::payload_container::WS2Pv2MessagePayload;
     use crate::v2::WS2Pv2Message;
+    use crate::WS2PMessage;
     use bincode;
     use bincode::{deserialize, serialize};
     use dubp_common_doc::{BlockNumber, Blockstamp};
     use dubp_currency_params::CurrencyName;
-    use dubp_documents::documents::certification::*;
+    use dubp_user_docs::documents::certification::*;
     use dup_crypto::keys::bin_signable::BinSignable;
     use dup_crypto::keys::*;
     use durs_network_documents::network_endpoint::*;
@@ -221,14 +222,14 @@ mod tests {
 
     pub fn test_ws2p_message(payload: WS2Pv2MessagePayload) {
         let keypair1 = keypair1();
-        let mut ws2p_message = WS2Pv2Message {
+        let mut ws2p_message = WS2PMessage::V2(WS2Pv2Message {
             currency_name: CurrencyName(String::from("g1")),
             issuer_node_id: NodeId(0),
             issuer_pubkey: PubKey::Ed25519(keypair1.public_key()),
             payload,
             message_hash: None,
             signature: None,
-        };
+        });
 
         let sign_result = ws2p_message.sign(PrivKey::Ed25519(keypair1.private_key()));
         if let Ok(bin_msg) = sign_result {
@@ -242,8 +243,7 @@ mod tests {
                 .verify()
                 .expect("WS2Pv2Message : Invalid signature !");
             // Test debinarization
-            let debinarization_result: Result<WS2Pv2Message, bincode::Error> =
-                deserialize(&bin_msg);
+            let debinarization_result: Result<WS2PMessage, bincode::Error> = deserialize(&bin_msg);
             if let Ok(ws2p_message2) = debinarization_result {
                 assert_eq!(ws2p_message, ws2p_message2);
             } else {
diff --git a/lib/modules/ws2p/ws2p-messages/v2/payload_container.rs b/lib/modules/ws2p/ws2p-messages/v2/payload_container.rs
index 42f19c9a..3a31d06a 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/payload_container.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/payload_container.rs
@@ -18,12 +18,12 @@ use super::ok::WS2Pv2OkMsg;
 use super::req_responses::WS2Pv2ReqRes;
 use super::requests::WS2Pv2Request;
 use super::secret_flags::WS2Pv2SecretFlagsMsg;
-use dubp_documents::documents::block::BlockDocument;
-use dubp_documents::documents::certification::CertificationDocument;
-use dubp_documents::documents::identity::IdentityDocument;
-use dubp_documents::documents::membership::MembershipDocument;
-use dubp_documents::documents::revocation::RevocationDocumentV10;
-use dubp_documents::documents::transaction::TransactionDocument;
+use dubp_block_doc::BlockDocument;
+use dubp_user_docs::documents::certification::CertificationDocument;
+use dubp_user_docs::documents::identity::IdentityDocument;
+use dubp_user_docs::documents::membership::MembershipDocument;
+use dubp_user_docs::documents::revocation::RevocationDocumentV10;
+use dubp_user_docs::documents::transaction::TransactionDocument;
 use dup_crypto::hashs::Hash;
 use durs_network_documents::network_head_v2::NetworkHeadV2;
 use durs_network_documents::network_head_v3::NetworkHeadV3;
diff --git a/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs b/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
index f734f8fc..3bdfd575 100644
--- a/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
+++ b/lib/modules/ws2p/ws2p-messages/v2/req_responses.rs
@@ -13,11 +13,11 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
+use dubp_block_doc::BlockDocument;
 use dubp_common_doc::blockstamp::Blockstamp;
-use dubp_documents::documents::block::BlockDocument;
-use dubp_documents::documents::certification::CompactCertificationDocumentV10;
-use dubp_documents::documents::identity::v10::CompactIdentityDocumentV10;
-use dubp_documents::documents::membership::v10::CompactPoolMembershipDoc;
+use dubp_user_docs::documents::certification::CompactCertificationDocumentV10;
+use dubp_user_docs::documents::identity::v10::CompactIdentityDocumentV10;
+use dubp_user_docs::documents::membership::v10::CompactPoolMembershipDoc;
 use dup_crypto::hashs::Hash;
 use std::str;
 
diff --git a/lib/modules/ws2p/ws2p-protocol/Cargo.toml b/lib/modules/ws2p/ws2p-protocol/Cargo.toml
index 0c44f5fb..7a726293 100644
--- a/lib/modules/ws2p/ws2p-protocol/Cargo.toml
+++ b/lib/modules/ws2p/ws2p-protocol/Cargo.toml
@@ -12,7 +12,7 @@ path = "src/lib.rs"
 [dependencies]
 dubp-common-doc = { path = "../../../dubp/common-doc"} #, version = "0.1.0" }
 dubp-currency-params = { path = "../../../dubp/currency-params" }
-dubp-documents= { path = "../../../dubp/documents" }
+dubp-user-docs= { path = "../../../dubp/user-docs" }
 durs-common-tools = { path = "../../../tools/common-tools" }
 dup-crypto = { path = "../../../crypto" }
 durs-module = { path = "../../../core/module" }
diff --git a/lib/modules/ws2p/ws2p/Cargo.toml b/lib/modules/ws2p/ws2p/Cargo.toml
index 00ac8968..81b770bb 100644
--- a/lib/modules/ws2p/ws2p/Cargo.toml
+++ b/lib/modules/ws2p/ws2p/Cargo.toml
@@ -13,7 +13,7 @@ path = "src/lib.rs"
 bincode = "1.0.*"
 dubp-common-doc = { path = "../../../dubp/common-doc"} #, version = "0.1.0" }
 dubp-currency-params = { path = "../../../dubp/currency-params" }
-dubp-documents= { path = "../../../dubp/documents" }
+dubp-user-docs= { path = "../../../dubp/user-docs" }
 durs-network-documents = { path = "../../../dunp/network-documents" }
 durs-common-tools = { path = "../../../tools/common-tools" }
 dup-crypto = { path = "../../../crypto" }
diff --git a/lib/tests-tools/documents-tests-tools/Cargo.toml b/lib/tests-tools/user-docs-tests-tools/Cargo.toml
similarity index 70%
rename from lib/tests-tools/documents-tests-tools/Cargo.toml
rename to lib/tests-tools/user-docs-tests-tools/Cargo.toml
index 3e4251bb..5906780f 100644
--- a/lib/tests-tools/documents-tests-tools/Cargo.toml
+++ b/lib/tests-tools/user-docs-tests-tools/Cargo.toml
@@ -1,8 +1,8 @@
 [package]
-name = "dubp-documents-tests-tools"
+name = "dubp-user-docs-tests-tools"
 version = "0.1.0"
 authors = ["elois <elois@duniter.org>"]
-description = "Crypto tests tools for projects use dubp-documents."
+description = "Crypto tests tools for projects use dubp-user-docs."
 repository = "https://git.duniter.org/nodes/rust/duniter-rs"
 readme = "README.md"
 keywords = ["rust", "test", "tools"]
@@ -13,9 +13,10 @@ edition = "2018"
 path = "src/lib.rs"
 
 [dependencies]
+dubp-block-doc = { path = "../../dubp/block-doc"} #, version = "0.1.0" }
 dubp-common-doc = { path = "../../dubp/common-doc"} #, version = "0.1.0" }
 dubp-currency-params = { path = "../../dubp/currency-params" }
-dubp-documents = { path = "../../dubp/documents" }
+dubp-user-docs = { path = "../../dubp/user-docs" }
 dup-crypto = { path = "../../crypto" }
 dup-crypto-tests-tools = { path = "../crypto-tests-tools" }
 
diff --git a/lib/tests-tools/documents-tests-tools/src/lib.rs b/lib/tests-tools/user-docs-tests-tools/src/lib.rs
similarity index 94%
rename from lib/tests-tools/documents-tests-tools/src/lib.rs
rename to lib/tests-tools/user-docs-tests-tools/src/lib.rs
index cd46bff0..ada0d47d 100644
--- a/lib/tests-tools/documents-tests-tools/src/lib.rs
+++ b/lib/tests-tools/user-docs-tests-tools/src/lib.rs
@@ -13,7 +13,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-//! Crypto tests tools for projects use dubp-documents.
+//! Crypto tests tools for projects use dubp-user-docs.
 
 #![deny(
     missing_docs,
diff --git a/lib/tests-tools/documents-tests-tools/src/mocks/identity.rs b/lib/tests-tools/user-docs-tests-tools/src/mocks/identity.rs
similarity index 89%
rename from lib/tests-tools/documents-tests-tools/src/mocks/identity.rs
rename to lib/tests-tools/user-docs-tests-tools/src/mocks/identity.rs
index cd3c19fe..a424081e 100644
--- a/lib/tests-tools/documents-tests-tools/src/mocks/identity.rs
+++ b/lib/tests-tools/user-docs-tests-tools/src/mocks/identity.rs
@@ -13,13 +13,13 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-//! Mocks for projects use dubp-documents
+//! Mocks for projects use dubp-user-docs
 
 use dubp_common_doc::blockstamp::Blockstamp;
 use dubp_common_doc::traits::DocumentBuilder;
 use dubp_common_doc::{BlockHash, BlockNumber};
-use dubp_documents::documents::identity::v10::IdentityDocumentV10Builder;
-use dubp_documents::documents::identity::*;
+use dubp_user_docs::documents::identity::v10::IdentityDocumentV10Builder;
+use dubp_user_docs::documents::identity::*;
 use dup_crypto::hashs::Hash;
 use dup_crypto::keys::PubKey;
 
diff --git a/lib/tests-tools/documents-tests-tools/src/mocks/mod.rs b/lib/tests-tools/user-docs-tests-tools/src/mocks/mod.rs
similarity index 96%
rename from lib/tests-tools/documents-tests-tools/src/mocks/mod.rs
rename to lib/tests-tools/user-docs-tests-tools/src/mocks/mod.rs
index ec6f1915..160cb738 100644
--- a/lib/tests-tools/documents-tests-tools/src/mocks/mod.rs
+++ b/lib/tests-tools/user-docs-tests-tools/src/mocks/mod.rs
@@ -13,14 +13,15 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-//! Mocks for projects use dubp-documents
+//! Mocks for projects use dubp-user-docs
 
 pub mod identity;
+pub mod tx;
 
+use dubp_block_doc::{BlockDocument, BlockDocumentV10};
 use dubp_common_doc::blockstamp::Blockstamp;
 use dubp_common_doc::{BlockHash, BlockNumber};
 use dubp_currency_params::CurrencyName;
-use dubp_documents::documents::block::{BlockDocument, BlockDocumentV10};
 use dup_crypto::hashs::Hash;
 
 /// Generate n mock blockstamps
diff --git a/lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs b/lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs
new file mode 100644
index 00000000..5ed6cbcf
--- /dev/null
+++ b/lib/tests-tools/user-docs-tests-tools/src/mocks/tx.rs
@@ -0,0 +1,57 @@
+//  Copyright (C) 2019  Éloïs SANCHEZ
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+//! Mocks for projects use dubp-user-docs
+
+use dubp_common_doc::traits::DocumentBuilder;
+use dubp_common_doc::Blockstamp;
+use dubp_user_docs::documents::transaction::*;
+use dup_crypto::keys::*;
+use std::str::FromStr;
+
+/// Generate first G1 transaction !
+pub fn first_g1_tx_doc() -> TransactionDocument {
+    let expected_tx_builder = TransactionDocumentBuilder {
+        currency: &"g1",
+        blockstamp: &Blockstamp::from_string(
+            "50-00001DAA4559FEDB8320D1040B0F22B631459F36F237A0D9BC1EB923C12A12E7",
+        )
+        .expect("Fail to parse blockstamp"),
+        locktime: &0,
+        issuers: &vec![PubKey::Ed25519(
+            ed25519::PublicKey::from_base58("2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ")
+                .expect("Fail to parse issuer !"),
+        )],
+        inputs: &vec![TransactionInput::from_str(
+            "1000:0:D:2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ:1",
+        )
+        .expect("Fail to parse inputs")],
+        unlocks: &vec![
+            TransactionInputUnlocks::from_str("0:SIG(0)").expect("Fail to parse unlocks")
+        ],
+        outputs: &vec![
+            TransactionOutput::from_str("1:0:SIG(Com8rJukCozHZyFao6AheSsfDQdPApxQRnz7QYFf64mm)")
+                .expect("Fail to parse outputs"),
+            TransactionOutput::from_str("999:0:SIG(2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ)")
+                .expect("Fail to parse outputs"),
+        ],
+        comment: "TEST",
+        hash: None,
+    };
+
+    expected_tx_builder.build_with_signature(vec![Sig::Ed25519(
+                ed25519::Signature::from_base64("fAH5Gor+8MtFzQZ++JaJO6U8JJ6+rkqKtPrRr/iufh3MYkoDGxmjzj6jCADQL+hkWBt8y8QzlgRkz0ixBcKHBw==").expect("Fail to parse sig !")
+            )])
+}
-- 
GitLab