# Transfert et remise au propre dokos

**URL:** <https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411>\
**Category:** 🚧 Installation / Administration\
**Created:** [Mars 4, 2025, 2:47 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411 "2025-03-04T14:47:35Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 2:47 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/1 "2025-03-04T14:47:35Z")

</div>

Bonjour à tous, j’ai une série de bug qui ont l’air d’être présent que sur mon install.  
J’ai peut-être une série de difficultés liés aux personnalisations que j’ai réalisé.

Je souhaite donc repartir sur une base propre :

- installation dokos avec les appli frappeverse
- creation d’une appli sje pour gérer toutes les configuration, personnalisation et appli spécifique (et du coup ne plus avoir de personnalisation autre que dans l’appli)
- J’en profiterai pour réimporter les donner strictement nécessaire et du coup faire du nettoyage !!

J’arrive du coup à mes questions :

- pensez-vous que c’est la bonne méthode
- Je pense passer par l’outil export de dokos / traiter la donnée en csv ou tableur / import dans le nouveau dokos
- Quel est la hiérarchie des donnée à avoir pour éviter au maximum les erreurs d’import ? (ex. groupe d’article avant articles…)
- Comment structurer le rangement des images liés aux articles et autres documents sans qu’ils soient en doublon et en vrac dans les publics\_files ou privates\_files

Merci d’avance pour vos conseil et avis

PS: ci-dessous un des dernier bug que j’ai

```auto
Please type some additional information that could help us reproduce this issue:
App Versions
{
	"bank": "1.0.1",
	"builder": "1.13.0",
	"construction": "1.12.0",
	"crm": "1.34.5",
	"erpnext": "4.45.1",
	"frappe": "4.50.0",
	"hrms": "2.48.0",
	"insights": "2.2.9",
	"nextcloud": "0.0.1",
	"ocr": "1.0.0",
	"payments": "2.15.0",
	"print_designer": "1.4.3",
	"wiki": "2.0.0"
}
Route
Form/Sales Invoice/(44m9i74ua8)
Error Report
Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 114, in application
    response = frappe.api.handle(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/api/ __init__.py", line 49, in handle
    data = endpoint(**arguments)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
    return frappe.handler.handle()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/handler.py", line 49, in handle
    data = execute_cmd(cmd)
           ^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/ __init__.py", line 1738, in call
    return fn(*args, **newargs)
           ^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/utils/typing_validations.py", line 30, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/desk/form/save.py", line 37, in savedocs
    doc.submit()
  File "apps/frappe/frappe/utils/typing_validations.py", line 30, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1105, in submit
    def cancel(self):
            ^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1088, in _submit
    """Cancel the document. Sets `docstatus` = 2, then saves."""
           ^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 343, in save
    return self._save(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 416, in _save
    self.run_post_save_methods()
  File "apps/frappe/frappe/model/document.py", line 1188, in run_post_save_methods
    raise
  File "apps/frappe/frappe/model/document.py", line 1022, in run_method
    run_webhooks(self, method)
          ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1393, in composer
    def runner(self, method, *args, **kwargs):
                  ^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/ __init__.py", line 1728, in get_attr
    return getattr(get_module(modulename), methodname)
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/ __init__.py", line 1465, in get_module
    return importlib.import_module(modulename)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/ __init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "", line 1387, in _gcd_import
  File "", line 1360, in _find_and_load
  File "", line 1331, in _find_and_load_unlocked
  File "", line 935, in _load_unlocked
  File "", line 995, in exec_module
  File "", line 488, in _call_with_frames_removed
  File "apps/erpnext/erpnext/regional/italy/utils.py", line 11, in 
    from erpnext.stock.utils import get_default_stock_uom
ImportError: cannot import name 'get_default_stock_uom' from 'erpnext.stock.utils' (apps/erpnext/erpnext/stock/utils.py)
Request Data
{
	"type": "POST",
	"args": {
  "doc": "{\"make_payment_via_journal_entry\":0},\"__last_sync_on\":\"2025-03-03T17:29:39.500Z\"}",
  "action": "Submit"
	},
	"btn": {
  "jQuery370052702650411046231": {
  	"events": {
    "click": [
    	{
      "type": "click",
      "origType": "click",
      "guid": 776,
      "namespace": ""
    	}
    ]
  	}
  }
	},
	"freeze": true,
	"headers": {},
	"error_handlers": {},
	"url": "/api/method/frappe.desk.form.save.savedocs"
}
Response JSON
{
	"exception": "ImportError: cannot import name 'get_default_stock_uom' from 'erpnext.stock.utils' (apps/erpnext/erpnext/stock/utils.py)",
	"exc_type": "ImportError",
	"_exc_source": "erpnext (app)"
}

```

---

<div class="post-metadata">

**Author:** ![corentin](https://community.dokos.io/user_avatar/community.dokos.io/corentin/32/305_2.png) [@corentin](https://community.dokos.io/u/corentin)\
**Post date:** [Mars 4, 2025, 3:27 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/2 "2025-03-04T15:27:13Z")

</div>

Bonjour @oryxr,

En résumé : il faut exécuter la commande `bench restart`.

* * *

Le code source Python en question affiché n’existait pas encore dans Dokos v4.45.1, ce qui me laisse penser que la version de Dokos qui est exécutée (chargée en mémoire) n’est pas la même que la version de Dokos sur le disque dur.

Autrement dit : il faut faire `bench restart` pour recharger le logiciel, ce qui est normalement fait automatiquement après une mise à jour.

Quelle est la commande/procédure que tu utilises pour mettre à jour Dokos ?

Corentin

---

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 3:32 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/3 "2025-03-04T15:32:42Z")

</div>

Dokos redémarre bien à chaque fois :  
Voici la commande que j’exécute` bench update --reset --restart-supervisor`

De plus on a régulièrement le fait que l’on change un prix sur les devis et il remet celui d’avant. Par moment ca passe et on change la quantité et le prix revient ? Par moment on a du mal à comprendre d’ou ca vient ☹

---

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 3:41 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/4 "2025-03-04T15:41:35Z")

</div>

par contre il me donne ca en console

 ![image](https://community.dokos.io/uploads/default/original/2X/9/9ca8cb7c4f8068dae6cf5d3538343af74f259254.png)

---

<div class="post-metadata">

**Author:** ![Antoine\_Maas](https://community.dokos.io/user_avatar/community.dokos.io/antoine_maas/32/2120_2.png) [@Antoine\_Maas](https://community.dokos.io/u/Antoine_Maas)\
**Post date:** [Mars 4, 2025, 3:44 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/5 "2025-03-04T15:44:10Z")

</div>

Salut @oryxr,

Par rapport à ta question initiale.  
Intuitivement et «&nbsp;à chaud&nbsp;» je procèderais comme cela :

- Etablir une liste de tout les doctype ayant eu des personnalisations (par exemple en regardant ce qu’il y a dans `Champ personnalisé` et `Propriété personnalisé`)
- Intégration de toutes les personnalisations et scrips dans une app (sur une instance locale de dév)
- Vérification de tout les flux de l’app sur l’instance de test pour vérifier que tout fonctionne
- Rétablir tout les paramètres par défaut des doctypes listés dans la 1ere étape  
 ![image](https://community.dokos.io/uploads/default/original/2X/e/ef43ca97788e17f906e965cb472c727e81d281af.png)
- Installation de l’app
- `Bench migrate`

Evidemment à tester d’abord sur une copie local de ton site pour ne rien casser.

Cela me semble moins casse-gueule qu’un import de toutes les données manuellement qui risque d’être assez fastidieux si votre site a beaucoup tourné

Antoine.

---

<div class="post-metadata">

**Author:** ![corentin](https://community.dokos.io/user_avatar/community.dokos.io/corentin/32/305_2.png) [@corentin](https://community.dokos.io/u/corentin)\
**Post date:** [Mars 4, 2025, 3:46 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/6 "2025-03-04T15:46:04Z")

</div>

> [@Antoine\_Maas](#):
>
> un import de toutes les données manuellement qui risque d’être assez fastidieux si votre site a beaucoup tourné

Il y a aussi la possibilité de faire des sauvegardes partielles et des restaurations partielles de données avec `bench backup --include "Item Price"`, à tester en détails.

---

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 3:52 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/7 "2025-03-04T15:52:02Z")

</div>

Je vois ce que tu veux dire, mais j’ai certains champs que je souhaiterai faire disparaitre car ils font doublon avec l’appli chantier, est ce que ca ne fait pas trop de pollution dans la base ?

---

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 3:53 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/8 "2025-03-04T15:53:34Z")

</div>

En faisant comme tu propose, est-ce qu’il sauvegarde aussi tous les liens et les groupes qui en découlent ?

---

<div class="post-metadata">

**Author:** ![Antoine\_Maas](https://community.dokos.io/user_avatar/community.dokos.io/antoine_maas/32/2120_2.png) [@Antoine\_Maas](https://community.dokos.io/u/Antoine_Maas)\
**Post date:** [Mars 4, 2025, 3:55 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/9 "2025-03-04T15:55:08Z")

</div>

Quelle quoi soit l’approche retenue il va falloir enlever les champs en doublon avant d’exporter les personnalisations dans l’app.

---

<div class="post-metadata">

**Author:** ![corentin](https://community.dokos.io/user_avatar/community.dokos.io/corentin/32/305_2.png) [@corentin](https://community.dokos.io/u/corentin)\
**Post date:** [Mars 4, 2025, 3:55 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/10 "2025-03-04T15:55:17Z")

</div>

> [@oryxr](#):
>
> est-ce qu’il sauvegarde aussi tous les liens et les groupes qui en découlent

Non malheureusement, donc il faut bien planifier la restauration en plusieurs étapes. Mais je ne pense pas que les données en base puissent avoir un effet délétère sur le fonctionnement du logiciel en lui-même, sauf pour les personnalisations.

---

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 3:59 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/11 "2025-03-04T15:59:20Z")

</div>

oui, c’est ce que je pense faire, mais je les renommes aussi pour avoir des choses plus cohérentes y compris dans les création devis-\>cmd-\>factures

---

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 4:01 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/12 "2025-03-04T16:01:19Z")

</div>

Par contre je ne comprends pas pourquoi sur l’interface web il m’indique pas la même version qu’en console ? Je pense qu’il doit y avoir un problème de cache, ce qui expliquerai d’autres soucis mais comment régler le problème et éviter qu’il revienne ?

J’ai pourtant essayé `bench --site www.sje.bzh clear-cache` et rien ne se fait

---

<div class="post-metadata">

**Author:** ![oryxr](https://community.dokos.io/user_avatar/community.dokos.io/oryxr/32/168_2.png) [@oryxr](https://community.dokos.io/u/oryxr)\
**Post date:** [Mars 4, 2025, 4:58 UTC](https://community.dokos.io/t/transfert-et-remise-au-propre-dokos/1411/13 "2025-03-04T16:58:14Z")

</div>

Finalement, j’ai redémarré la machine et la bonne version est apparut
