How to Switch from Develop mode to stable version

Hey Guys,

I am currently running my system on ERPNext: v13.x.x-develop () (develop)**. But want to switch to a stable version. Could anyone please help me with the steps to switch. I checked few links but was unclear of the steps.
I am a newbie to erpnext and not a coder. I have installed my erp using docker & docker-compose.

1 Like

please, If you find a solution, let me know

cd ~/frappe-bench
bench switch-to-branch version-13 frappe erpnext --upgrade
bench update --patch
bench migrate
bench update --build

It goes without saying, take backup before doing the process.

1 Like

Hey @mohitchechani
I get this error when I run bench update --patch

Traceback (most recent call last):

File “/usr/lib/python3.7/runpy.py”, line 193, in _run_module_as_main

"__main__", mod_spec)

File “/usr/lib/python3.7/runpy.py”, line 85, in _run_code

exec(code, run_globals)

File “/home/frappe/bench/apps/frappe/frappe/utils/bench_helper.py”, line 104, in

main()

File “/home/frappe/bench/apps/frappe/frappe/utils/bench_helper.py”, line 19, in main

click.Group(commands=commands)(prog_name='bench')

File “/home/frappe/bench/env/lib/python3.7/site-packages/click/core.py”, line 829, in call

return self.main(*args, **kwargs)

File “/home/frappe/bench/env/lib/python3.7/site-packages/click/core.py”, line 782, in main

rv = self.invoke(ctx)

File “/home/frappe/bench/env/lib/python3.7/site-packages/click/core.py”, line 1259, in invoke

return _process_result(sub_ctx.command.invoke(sub_ctx))

File “/home/frappe/bench/env/lib/python3.7/site-packages/click/core.py”, line 1259, in invoke

return _process_result(sub_ctx.command.invoke(sub_ctx))

File “/home/frappe/bench/env/lib/python3.7/site-packages/click/core.py”, line 1066, in invoke

return ctx.invoke(self.callback, **ctx.params)

File “/home/frappe/bench/env/lib/python3.7/site-packages/click/core.py”, line 610, in invoke

return callback(*args, **kwargs)

File “/home/frappe/bench/env/lib/python3.7/site-packages/click/decorators.py”, line 21, in new_func

return f(get_current_context(), *args, **kwargs)

File “/home/frappe/bench/apps/frappe/frappe/commands/init.py”, line 27, in _func

ret = f(frappe._dict(ctx.obj), *args, **kwargs)

File “/home/frappe/bench/apps/frappe/frappe/commands/site.py”, line 309, in migrate

skip_search_index=skip_search_index

File “/home/frappe/bench/apps/frappe/frappe/migrate.py”, line 69, in migrate

frappe.modules.patch_handler.run_all(skip_failing)

File “/home/frappe/bench/apps/frappe/frappe/modules/patch_handler.py”, line 41, in run_all

run_patch(patch)

File “/home/frappe/bench/apps/frappe/frappe/modules/patch_handler.py”, line 30, in run_patch

if not run_single(patchmodule = patch):

File “/home/frappe/bench/apps/frappe/frappe/modules/patch_handler.py”, line 71, in run_single

return execute_patch(patchmodule, method, methodargs)

File “/home/frappe/bench/apps/frappe/frappe/modules/patch_handler.py”, line 91, in execute_patch

frappe.get_attr(patchmodule.split()[0] + ".execute")()

File “/home/frappe/bench/apps/erpnext/erpnext/patches/v13_0/setup_patient_history_settings_for_standard_doctypes.py”, line 18, in execute

setup_patient_history_settings()

File “/home/frappe/bench/apps/erpnext/erpnext/healthcare/setup.py”, line 230, in setup_patient_history_settings

settings.save()

File “/home/frappe/bench/apps/frappe/frappe/model/document.py”, line 285, in save

return self._save(*args, **kwargs)

File “/home/frappe/bench/apps/frappe/frappe/model/document.py”, line 322, in _save

self._validate_links()

File “/home/frappe/bench/apps/frappe/frappe/model/document.py”, line 836, in _validate_links

frappe.LinkValidationError)

File “/home/frappe/bench/apps/frappe/frappe/init.py”, line 439, in throw

msgprint(msg, raise_exception=exc, title=title, indicator='red', is_minimizable=is_minimizable, wide=wide, as_list=as_list)

File “/home/frappe/bench/apps/frappe/frappe/init.py”, line 418, in msgprint

_raise_exception()

File “/home/frappe/bench/apps/frappe/frappe/init.py”, line 372, in _raise_exception

raise raise_exception(msg)

frappe.exceptions.LinkValidationError: Could not find Row #1: Document Type: Patient Encounter, Row #3: Document Type: Lab Test, Row #5: Document Type: Vital Signs

Would you have a look into it?
Thank you in advance.

As per you log, you are getting error related to Paitent Encounter.

Are you on develop branch? If yes, then ERPNext has separated Healthcare Module in develop branch.

You need to install healthcare App separately

I switched from develop into develop-13 branch for the codebase.
I meant to migrate the database following your instructions.

Hi @mohitchechani
To be more specific, I have 2 servers running.
The first is on develop branch, and the second is running on version-13 branch.
I need to import database from the first server into the second one.
On the second server, both frappe and erpnext are on version-13.
I think it is relevant to the result of your first instructions (bench switch-to-branch version-13 frappe erpnext --upgrade).
So I ran the next command (bench update --patch), and got the error.
FYI I updated the database name and permissions, so there was no connection problem.
Thank you

Develop Branch of ERP Next and Frappe has separated Healthcare Module

So, your data on server 1 does not have Healthcare Module tables

Stable Branch of ERP Next and Frappe has integrated Healthcare Module,
Therefore, the tables for Healthcare Module are already there.

So, when you import data from Server 1 to Server 2 you are getting error

frappe.exceptions.LinkValidationError: Could not find Row #1: Document Type: Patient Encounter, Row #3: Document Type: Lab Test, Row #5: Document Type: Vital Signs

What could be the solution in this case? @mohitchechani

Once you install develop branch of Frappe & ERPNext, install Healthcare app.

Once the app is installed, all the required tables will be created. After that you can import the data.

1 Like

image
Traceback (most recent call last):
File “/home/frappe/bench/env/lib/python3.7/site-packages/gunicorn/workers/sync.py”, line 136, in handle
self.handle_request(listener, req, client, addr)
File “/home/frappe/bench/env/lib/python3.7/site-packages/gunicorn/workers/sync.py”, line 179, in handle_request

After install the module, I got this.
respiter = self.wsgi(environ, resp.start_response)
File “/home/frappe/bench/env/lib/python3.7/site-packages/werkzeug/local.py”, line 231, in application
return ClosingIterator(app(environ, start_response), self.cleanup)
File “/home/frappe/bench/env/lib/python3.7/site-packages/werkzeug/wrappers/base_request.py”, line 237, in application
resp = f(*args[:-2] + (request,))
File “/home/frappe/bench/apps/frappe/frappe/app.py”, line 87, in application
response = handle_exception(e)
File “/home/frappe/bench/apps/frappe/frappe/app.py”, line 273, in handle_exception
response = get_response(“message”, http_status_code=http_status_code)
File “/home/frappe/bench/apps/frappe/frappe/website/serve.py”, line 23, in get_response
response = ErrorPage(exception=e).render()
File “/home/frappe/bench/apps/frappe/frappe/website/page_renderers/error_page.py”, line 6, in init
super().init(path=path, http_status_code=http_status_code)
File “/home/frappe/bench/apps/frappe/frappe/website/page_renderers/template_page.py”, line 28, in init
self.set_template_path()
File “/home/frappe/bench/apps/frappe/frappe/website/page_renderers/template_page.py”, line 37, in set_template_path
app_path = frappe.get_app_path(app)
File “/home/frappe/bench/apps/frappe/frappe/init.py”, line 1019, in get_app_path
return get_pymodule_path(app_name, *joins)
File “/home/frappe/bench/apps/frappe/frappe/init.py”, line 1034, in get_pymodule_path
return os.path.join(os.path.dirname(get_module(scrub(modulename)).file or ‘’), *joins)
File “/home/frappe/bench/apps/frappe/frappe/init.py”, line 996, in get_module
return importlib.import_module(modulename)
File “/usr/lib/python3.7/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “”, line 1006, in _gcd_import
File “”, line 983, in _find_and_load
File “”, line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named ‘healthcare’