In this article, I will capture my journey and help you upgrade Odoo 9 to version 10

  1. The first step involves determining your database name, its odoo version and the version of odoo that you are going to upgrade it to.
  2. Database backup – I highly recommend that you take a backup of your before anything to avoid data loss.
  3. Clone the OpenUpgrade repository from Github with the branch that corresponds to the version of odoo that you want to upgrade to (refer to your notes in step 1).
  4. Create a configuration file that you will use to run the openupgrade instance. I recommend making a copy of your live configuration file and make edits to point the instance to the database you are going to upgrade. In my case, I only change the addons folder to point to the OpenUpgrade addons as well as the dbfilter to the database name in step 1.
  5. Run the openupgrade instance with the configuration file and the –u all flag. It is highly recommended to run this using a python virtual environment. This avoids any issues with dependencies in your live instance.
  6. Monitor the log for any errors and warnings and note if anything goes wrong. Most of the issues can be fixed while some errors require you to contact the community via the issues page. Most issues have already been reported and fixed so its always wise to check the list of existing issues.
  7. After the migration is complete, stop the openupgrade instance and run your database against a clean instance of version 10.
Login Issue (error) after upgrade odoo 9 to version 10

In my experience while using openupgrade to upgrade of odoo 9 to version 10, I experienced issues logging in to the database. This is usually due to the fact that some core addons in odoo version 9 are no longer available in odoo 10. The upgrade process keeps some views from these modules which causes the following exception.

2018-02-18 09:52:28,299 969 ERROR v9_db werkzeug: Error on request:
Traceback (most recent call last):
File “/opt/openupgrade/OpenUpgrade/venv/lib/python2.7/site-packages/werkzeug/serving.py”, line 193, in run_wsgi
execute(self.server.app)
File “/opt/openupgrade/OpenUpgrade/venv/lib/python2.7/site-packages/werkzeug/serving.py”, line 181, in execute
application_iter = app(environ, start_response)
File “/opt/openupgrade/OpenUpgrade/odoo/service/server.py”, line 250, in app
return self.app(e, s)
File “/opt/openupgrade/OpenUpgrade/odoo/service/wsgi_server.py”, line 184, in application
return application_unproxied(environ, start_response)
File “/opt/openupgrade/OpenUpgrade/odoo/service/wsgi_server.py”, line 170, in application_unproxied
result = handler(environ, start_response)
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 1308, in __call__
return self.dispatch(environ, start_response)
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 1282, in __call__
return self.app(environ, start_wrapped)
File “/opt/openupgrade/OpenUpgrade/venv/lib/python2.7/site-packages/werkzeug/wsgi.py”, line 599, in __call__
return self.app(environ, start_response)
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 1480, in dispatch
result = ir_http._dispatch()
File “/opt/openupgrade/OpenUpgrade/addons/web_editor/models/ir_http.py”, line 21, in _dispatch
return super(IrHttp, cls)._dispatch()
File “/opt/openupgrade/OpenUpgrade/addons/utm/models/ir_http.py”, line 20, in _dispatch
response = super(IrHttp, cls)._dispatch()
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_http.py”, line 199, in _dispatch
return cls._handle_exception(e)
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_http.py”, line 169, in _handle_exception
return request._handle_exception(exception)
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 768, in _handle_exception
return super(HttpRequest, self)._handle_exception(exception)
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_http.py”, line 195, in _dispatch
result = request.dispatch()
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 827, in dispatch
r = self._call_function(**self.params)
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 333, in _call_function
return checked_call(self.db, *args, **kwargs)
File “/opt/openupgrade/OpenUpgrade/odoo/service/model.py”, line 101, in wrapper
return f(dbname, *args, **kwargs)
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 329, in checked_call
result.flatten()
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 1259, in flatten
self.response.append(self.render())
File “/opt/openupgrade/OpenUpgrade/odoo/http.py”, line 1252, in render
return env[“ir.ui.view”].render_template(self.template, self.qcontext)
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_ui_view.py”, line 1064, in render_template
return self.browse(self.get_view_id(template)).render(values, engine)
File “/opt/openupgrade/OpenUpgrade/addons/web_editor/models/ir_ui_view.py”, line 26, in render
return super(IrUiView, self).render(values=values, engine=engine)
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_ui_view.py”, line 1084, in render
return self.env[engine].render(self.id, qcontext)
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_qweb/ir_qweb.py”, line 53, in render
return super(IrQWeb, self).render(id_or_xml_id, values=values, **context)
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_qweb/qweb.py”, line 248, in render
self.compile(template, options)(self, body.append, values or {})
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_qweb/qweb.py”, line 317, in _compiled_fn
raise e
QWebException: unbound method get_param() must be called with ir.config_parameter instance as first argument (got Cursor instance instead)
Traceback (most recent call last):
File “/opt/openupgrade/OpenUpgrade/odoo/addons/base/ir/ir_qweb/qweb.py”, line 315, in _compiled_fn
return compiled(self, append, values, options, log)
File “<template>”, line 1, in template_web_assets_backend_45
TypeError: unbound method get_param() must be called with ir.config_parameter instance as first argument (got Cursor instance instead)

Error to render compiling AST
TypeError: unbound method get_param() must be called with ir.config_parameter instance as first argument (got Cursor instance instead)
Template: web.assets_backend
Path: /templates/t/script[81]/t[2] Node: <t t-esc=”request.registry[‘ir.config_parameter’].get_param(request.cr, request.uid, ‘database.uuid’)”/>”
);
});

You have two ways to fix the issue:

1. Before upgrading, uninstall the module from your v9 instance from the modules menu.

2. Uninstall the modules through the database by simply setting their status in the database as ‘uninstalled’.

To uninstall odoo addons from the database, I simply executed the following queries:

update ir_module_module set state = ‘uninstalled’ where name like ‘im_%’;

delete from ir_ui_view where name like ‘%im_odoo%’

 

Leave a Reply

Your email address will not be published. Required fields are marked *