{"id":7104,"date":"2026-08-31T15:19:42","date_gmt":"2026-08-31T09:49:42","guid":{"rendered":"https:\/\/www.eternalsoftsolutions.com\/blog\/?p=7104"},"modified":"2026-09-03T11:47:56","modified_gmt":"2026-09-03T06:17:56","slug":"odoo-18-to-odoo-19-migration","status":"publish","type":"post","link":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/","title":{"rendered":"From Odoo 18 to Odoo 19 <br\/> Our Real Migration Story (Database, Custom Code, and the Expense Report Curveball)\u00a0"},"content":{"rendered":"","protected":false},"excerpt":{"rendered":"","protected":false},"author":5,"featured_media":7108,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58],"tags":[],"class_list":["post-7104","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-odoo-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v19.6 (Yoast SEO v25.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Odoo 18 to Odoo 19 Migration: Our Real Experience<\/title>\n<meta name=\"description\" content=\"Explore our real Odoo 18 to Odoo 19 migration journey, covering database migration, custom code challenges, and an unexpected expense report issue.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"From Odoo 18 to Odoo 19  Our Real Migration Story (Database, Custom Code, and the Expense Report Curveball)\u00a0\" \/>\n<meta property=\"og:description\" content=\"Explore our real Odoo 18 to Odoo 19 migration journey, covering database migration, custom code challenges, and an unexpected expense report issue.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/\" \/>\n<meta property=\"og:site_name\" content=\"Eternal Web Pvt Ltd\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eternalsoftsolutions\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-31T09:49:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-03T06:17:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1601\" \/>\n\t<meta property=\"og:image:height\" content=\"983\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Dipak Vyas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@eternalsoftsolutions\" \/>\n<meta name=\"twitter:site\" content=\"@eternalsoftsolutions\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dipak Vyas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/\"},\"author\":{\"name\":\"Dipak Vyas\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/person\/f129f2f9aa5672f59eb7d74612ff701f\"},\"headline\":\"From Odoo 18 to Odoo 19 Our Real Migration Story (Database, Custom Code, and the Expense Report Curveball)\u00a0\",\"datePublished\":\"2026-08-31T09:49:42+00:00\",\"dateModified\":\"2026-09-03T06:17:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/\"},\"wordCount\":16,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp\",\"articleSection\":[\"Odoo Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/\",\"url\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/\",\"name\":\"Odoo 18 to Odoo 19 Migration: Our Real Experience\",\"isPartOf\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp\",\"datePublished\":\"2026-08-31T09:49:42+00:00\",\"dateModified\":\"2026-09-03T06:17:56+00:00\",\"description\":\"Explore our real Odoo 18 to Odoo 19 migration journey, covering database migration, custom code challenges, and an unexpected expense report issue.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage\",\"url\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp\",\"contentUrl\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp\",\"width\":1601,\"height\":983,\"caption\":\"hire-odoo-dev\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"From Odoo 18 to Odoo 19 Our Real Migration Story (Database, Custom Code, and the Expense Report Curveball)\u00a0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#website\",\"url\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/\",\"name\":\"Eternal Web Pvt Ltd\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#organization\",\"name\":\"Eternal Web Pvt Ltd\",\"alternateName\":\"Eternal Web\",\"url\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/blog-logo-image.png\",\"contentUrl\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/blog-logo-image.png\",\"width\":360,\"height\":260,\"caption\":\"Eternal Web Pvt Ltd\"},\"image\":{\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/eternalsoftsolutions\",\"https:\/\/x.com\/eternalsoftsolutions\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/person\/f129f2f9aa5672f59eb7d74612ff701f\",\"name\":\"Dipak Vyas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/96d48023130599f5ea0417e154b4b2bb?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/96d48023130599f5ea0417e154b4b2bb?s=96&r=g\",\"caption\":\"Dipak Vyas\"},\"description\":\"Dipak is an experienced industry veteran and trusted Odoo ERP Consultant, serving as the co-founder of Eternal Web Pvt Ltd. He specializes in delivering tailored ERP solutions that drive digital transformation for SMEs and enterprises. With extensive expertise in Odoo customization, integration, and deployment, Dipak has consistently helped businesses streamline operations, enhance productivity, and achieve sustainable growth.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/dipak-eternal\"],\"url\":\"https:\/\/www.eternalsoftsolutions.com\/blog\/author\/dipak-vyas\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Odoo 18 to Odoo 19 Migration: Our Real Experience","description":"Explore our real Odoo 18 to Odoo 19 migration journey, covering database migration, custom code challenges, and an unexpected expense report issue.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/","og_locale":"en_US","og_type":"article","og_title":"From Odoo 18 to Odoo 19  Our Real Migration Story (Database, Custom Code, and the Expense Report Curveball)\u00a0","og_description":"Explore our real Odoo 18 to Odoo 19 migration journey, covering database migration, custom code challenges, and an unexpected expense report issue.","og_url":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/","og_site_name":"Eternal Web Pvt Ltd","article_publisher":"https:\/\/www.facebook.com\/eternalsoftsolutions","article_published_time":"2026-08-31T09:49:42+00:00","article_modified_time":"2026-09-03T06:17:56+00:00","og_image":[{"width":1601,"height":983,"url":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp","type":"image\/webp"}],"author":"Dipak Vyas","twitter_card":"summary_large_image","twitter_creator":"@eternalsoftsolutions","twitter_site":"@eternalsoftsolutions","twitter_misc":{"Written by":"Dipak Vyas","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#article","isPartOf":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/"},"author":{"name":"Dipak Vyas","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/person\/f129f2f9aa5672f59eb7d74612ff701f"},"headline":"From Odoo 18 to Odoo 19 Our Real Migration Story (Database, Custom Code, and the Expense Report Curveball)\u00a0","datePublished":"2026-08-31T09:49:42+00:00","dateModified":"2026-09-03T06:17:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/"},"wordCount":16,"commentCount":0,"publisher":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp","articleSection":["Odoo Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/","url":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/","name":"Odoo 18 to Odoo 19 Migration: Our Real Experience","isPartOf":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage"},"image":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp","datePublished":"2026-08-31T09:49:42+00:00","dateModified":"2026-09-03T06:17:56+00:00","description":"Explore our real Odoo 18 to Odoo 19 migration journey, covering database migration, custom code challenges, and an unexpected expense report issue.","breadcrumb":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#primaryimage","url":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp","contentUrl":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2026\/08\/hire-odoo-dev.webp","width":1601,"height":983,"caption":"hire-odoo-dev"},{"@type":"BreadcrumbList","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/odoo-18-to-odoo-19-migration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.eternalsoftsolutions.com\/blog\/"},{"@type":"ListItem","position":2,"name":"From Odoo 18 to Odoo 19 Our Real Migration Story (Database, Custom Code, and the Expense Report Curveball)\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#website","url":"https:\/\/www.eternalsoftsolutions.com\/blog\/","name":"Eternal Web Pvt Ltd","description":"","publisher":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.eternalsoftsolutions.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#organization","name":"Eternal Web Pvt Ltd","alternateName":"Eternal Web","url":"https:\/\/www.eternalsoftsolutions.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/blog-logo-image.png","contentUrl":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/blog-logo-image.png","width":360,"height":260,"caption":"Eternal Web Pvt Ltd"},"image":{"@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eternalsoftsolutions","https:\/\/x.com\/eternalsoftsolutions"]},{"@type":"Person","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/person\/f129f2f9aa5672f59eb7d74612ff701f","name":"Dipak Vyas","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.eternalsoftsolutions.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/96d48023130599f5ea0417e154b4b2bb?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/96d48023130599f5ea0417e154b4b2bb?s=96&r=g","caption":"Dipak Vyas"},"description":"Dipak is an experienced industry veteran and trusted Odoo ERP Consultant, serving as the co-founder of Eternal Web Pvt Ltd. He specializes in delivering tailored ERP solutions that drive digital transformation for SMEs and enterprises. With extensive expertise in Odoo customization, integration, and deployment, Dipak has consistently helped businesses streamline operations, enhance productivity, and achieve sustainable growth.","sameAs":["https:\/\/www.linkedin.com\/in\/dipak-eternal"],"url":"https:\/\/www.eternalsoftsolutions.com\/blog\/author\/dipak-vyas\/"}]}},"_links":{"self":[{"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/7104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=7104"}],"version-history":[{"count":7,"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/7104\/revisions"}],"predecessor-version":[{"id":7112,"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/7104\/revisions\/7112"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/media\/7108"}],"wp:attachment":[{"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=7104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=7104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.eternalsoftsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=7104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}