{"id":680,"date":"2017-06-12T10:09:53","date_gmt":"2017-06-12T16:09:53","guid":{"rendered":"https:\/\/www.morphis-insights.com\/?p=680"},"modified":"2024-01-26T11:09:24","modified_gmt":"2024-01-26T11:09:24","slug":"cobol-mvc","status":"publish","type":"post","link":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/","title":{"rendered":"COBOL to MVC &#8211; C#\/.NET or J2EE\/Java"},"content":{"rendered":"<p class=\"p1\"><span class=\"s1\">In our last post, <a href=\"https:\/\/www.morphis-insights.com\/silver-tsunami-old\/\" target=\"_blank\" rel=\"noopener\"><span class=\"s2\">The Silver Tsunami \u2013 Out with the Old, and in with the\u2026<\/span><\/a>, we highlighted the three main options available for dealing with legacy systems: migrating, wrapping and modernization. With a specific focus on COBOL based systems, we concluded that both migration (lift-and-shift from, for example, mainframe to a Windows environment: COBOL to COBOL) and wrapping (adding connectivity layers without changing the core application) failed to address the core issue of the silver tsunami and potentially passed on a toxic problem to the next administration.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">This post focuses on the modernization option and explores the Morphis approach to <b>automating the transformation<\/b> of the COBOL application to an MVC architecture running on C#\/.NET or J2EE\/Java.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">The Morphis modernization approach is agnostic in terms of Java or .NET. Whichever your preference, the Morphis process is very similar and cost\/delivery timescales the same.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">A quick word on architecture:<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><b>Physical Architecture<\/b><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Our standard target architecture is MVC, a 3-tier architecture although additional tiers can be added to provide increased flexibility and scalability, albeit at the cost of increased complexity, deployment\/maintenance effort and cost.<\/span><\/p>\n<p class=\"p1\">[x_image type=\u201dthumbnail\u201d float=\u201dnone\u201d src=\u201dhttps:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/Physical.png\u201d info=\u201dnone\u201d info_place=\u201dtop\u201d info_trigger=\u201dhover\u201d]<\/p>\n<p class=\"p1\"><span class=\"s1\">In our experience, a 3-tier model provides the most optimal solution for the majority of applications.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><b>Logical Architecture<\/b><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">For the layered logical architecture, we use a rich-client architectural pattern. This provides high performance, together with an interactive, rich user experience for applications that must operate in stand-alone, connected, occasionally connected, and disconnected scenarios.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">We use logical layers for the Presentation, Domain, Data and Operational aspects of the system. Each layer exposes services to the others above.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">The following diagram illustrates the layers, components and configuration:<\/span><\/p>\n<p class=\"p1\">[x_image type=\u201dthumbnail\u201d float=\u201dnone\u201d src=\u201dhttps:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/Logical.png\u201d info=\u201dnone\u201d info_place=\u201dtop\u201d info_trigger=\u201dhover\u201d]<\/p>\n<p class=\"p1\"><span class=\"s1\">In terms of the modernization process itself, this normally breaks down into the following components:<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><b>Pattern Mining\/Source Model Transformations<\/b><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">This is the most generic activity. We have accumulated a series of generic COBOL transformations, all related to source code cleansing and optimization, that we can apply to all COBOL source code.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Outside of these generic situations, we use our <a href=\"https:\/\/www.morphis-insights.com\/kuscos-application-analysis\/\" target=\"_blank\" rel=\"noopener\"><span class=\"s2\">Kuscos tool<\/span><\/a> to detect application specific patterns. These often include, by way of example, discarding identified redundant code and unused variables; converting basic EVALUATEs to Ifs etc.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"><b>Transformation<\/b><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">The COBOL programming practices and concepts adopted by the client can provide a useful set of patterns from which we can automatically drive the design of the target applications.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">For example, the COBOL programs transformed to procedural classes, with methods correspondent to the original COBOL sections and paragraphs. All COBOL statements, apart from the code patterns requiring special treatment, transformed to equivalent C# or Java code. All Working Storage variables transformed to Structural classes and private members. The COBOL copybooks transformed to public library classes, shared by all procedural classes obtained from the programs that include them in the application today.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">The screen layouts can be captured from the COBOL data structures exchanged between the screen programs and the terminal. That information will be used to generate the new interfaces, either WPF windows or ASP pages, if .NET is the target. The remaining program logic will be migrated as interface event handlers.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">All files and reports produced and consumed by the existing application will be handled by special proxy classes, which will have additional functionality, beyond Read or Write, such as serialization to different formats (XML, CSV) or sorting mechanisms.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">The \u2018sort\u2019 functionality, in particular, can allow the application\u2019s performance to be drastically improved, specifically in those cases where there is a heavy, yet required, I\/O weight just for sorting groups of records.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">After the transformation and the first side-by-side tests, we can use target model analysis to, for example, detect specific layout patterns (such as fields displaying dates and time, password input areas, groups of related fields, etc.), which can be replaced by modern semantically equivalent widgets, like calendars, password boxes and grids. This will be of major relevance, regarding the improvement and modernization of the transformed application.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">The Morphis code generators will be customized not only to incorporate the target elements referred to above, but also to adopt any existing client practices or recommendations. They will be based on the existing Morphis C# or Java code generators that have been matured across many projects and have as their main guidelines: the clearance and simplicity of the code; the ubiquitous documentation of all elements; and the adherence to all major coding recommendations for the target language.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Finally, the database may need to be redesigned and migrated too. This is project specific and, in our experience, often carried out by the client project team. From a testing standpoint, and assuming the database is to be migrated, we will test the modernized application against the old database first and then against the migrated database to ensure equivalence.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">As ever, if you have any questions or comments please reach out to us via the <a href=\"https:\/\/www.morphis-insights.com\/contact\/\" target=\"_blank\" rel=\"noopener\"><span class=\"s2\">Contact Page<\/span><\/a>.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our last post, The Silver Tsunami \u2013 Out with the Old, and in with the\u2026, we highlighted the three main options available for dealing with legacy systems: migrating, wrapping and modernization. With a specific focus on COBOL based systems, we concluded that both migration (lift-and-shift from, for example, mainframe to a Windows environment: COBOL [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":679,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[87,103],"class_list":["post-680","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-modernization","tag-application-modernization-alternatives","tag-cobol"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>COBOL to MVC - C#\/.NET or J2EE\/Java | Morphis Insights<\/title>\n<meta name=\"description\" content=\"This post explains how to automatically modernize a COBOL application targeting an MVC architecture written in C#\/.NET or J2EE\/Java.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"COBOL to MVC - C#\/.NET or J2EE\/Java | Morphis Insights\" \/>\n<meta property=\"og:description\" content=\"This post explains how to automatically modernize a COBOL application targeting an MVC architecture written in C#\/.NET or J2EE\/Java.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/\" \/>\n<meta property=\"og:site_name\" content=\"Morphis-Tech Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-12T16:09:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-26T11:09:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/0207.cobol_4B6BBE64.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"770\" \/>\n\t<meta property=\"og:image:height\" content=\"335\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Bruno Andrade\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bruno Andrade\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/\"},\"author\":{\"name\":\"Bruno Andrade\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#\\\/schema\\\/person\\\/b6d9d149d3091b09f3ee9bd007183275\"},\"headline\":\"COBOL to MVC &#8211; C#\\\/.NET or J2EE\\\/Java\",\"datePublished\":\"2017-06-12T16:09:53+00:00\",\"dateModified\":\"2024-01-26T11:09:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/\"},\"wordCount\":862,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/0207.cobol_4B6BBE64.jpg\",\"keywords\":[\"Application Modernization Alternatives\",\"COBOL\"],\"articleSection\":[\"Application Modernization\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/\",\"url\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/\",\"name\":\"COBOL to MVC - C#\\\/.NET or J2EE\\\/Java | Morphis Insights\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/0207.cobol_4B6BBE64.jpg\",\"datePublished\":\"2017-06-12T16:09:53+00:00\",\"dateModified\":\"2024-01-26T11:09:24+00:00\",\"description\":\"This post explains how to automatically modernize a COBOL application targeting an MVC architecture written in C#\\\/.NET or J2EE\\\/Java.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#primaryimage\",\"url\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/0207.cobol_4B6BBE64.jpg\",\"contentUrl\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/0207.cobol_4B6BBE64.jpg\",\"width\":770,\"height\":335,\"caption\":\"COBOL Modernization\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/cobol-mvc\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"COBOL to MVC &#8211; C#\\\/.NET or J2EE\\\/Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/\",\"name\":\"Legacy Modernization - Blog\",\"description\":\"Legacy to Cloud\",\"publisher\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#organization\",\"name\":\"Morphis Tech\",\"url\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Logo_Blog_2024-1.svg\",\"contentUrl\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Logo_Blog_2024-1.svg\",\"width\":344,\"height\":51,\"caption\":\"Morphis Tech\"},\"image\":{\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/morphis_technologies\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/#\\\/schema\\\/person\\\/b6d9d149d3091b09f3ee9bd007183275\",\"name\":\"Bruno Andrade\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b26e477ef67cba42b8bc646722ca9ae122b8dc44bf6f5bf0c4072c2e36902b59?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b26e477ef67cba42b8bc646722ca9ae122b8dc44bf6f5bf0c4072c2e36902b59?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b26e477ef67cba42b8bc646722ca9ae122b8dc44bf6f5bf0c4072c2e36902b59?s=96&d=mm&r=g\",\"caption\":\"Bruno Andrade\"},\"url\":\"https:\\\/\\\/morphis-tech.com\\\/blog\\\/author\\\/bruno-andrade\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"COBOL to MVC - C#\/.NET or J2EE\/Java | Morphis Insights","description":"This post explains how to automatically modernize a COBOL application targeting an MVC architecture written in C#\/.NET or J2EE\/Java.","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:\/\/morphis-tech.com\/blog\/cobol-mvc\/","og_locale":"en_GB","og_type":"article","og_title":"COBOL to MVC - C#\/.NET or J2EE\/Java | Morphis Insights","og_description":"This post explains how to automatically modernize a COBOL application targeting an MVC architecture written in C#\/.NET or J2EE\/Java.","og_url":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/","og_site_name":"Morphis-Tech Blog","article_published_time":"2017-06-12T16:09:53+00:00","article_modified_time":"2024-01-26T11:09:24+00:00","og_image":[{"width":770,"height":335,"url":"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/0207.cobol_4B6BBE64.jpg","type":"image\/jpeg"}],"author":"Bruno Andrade","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bruno Andrade","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#article","isPartOf":{"@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/"},"author":{"name":"Bruno Andrade","@id":"https:\/\/morphis-tech.com\/blog\/#\/schema\/person\/b6d9d149d3091b09f3ee9bd007183275"},"headline":"COBOL to MVC &#8211; C#\/.NET or J2EE\/Java","datePublished":"2017-06-12T16:09:53+00:00","dateModified":"2024-01-26T11:09:24+00:00","mainEntityOfPage":{"@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/"},"wordCount":862,"commentCount":0,"publisher":{"@id":"https:\/\/morphis-tech.com\/blog\/#organization"},"image":{"@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#primaryimage"},"thumbnailUrl":"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/0207.cobol_4B6BBE64.jpg","keywords":["Application Modernization Alternatives","COBOL"],"articleSection":["Application Modernization"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/","url":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/","name":"COBOL to MVC - C#\/.NET or J2EE\/Java | Morphis Insights","isPartOf":{"@id":"https:\/\/morphis-tech.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#primaryimage"},"image":{"@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#primaryimage"},"thumbnailUrl":"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/0207.cobol_4B6BBE64.jpg","datePublished":"2017-06-12T16:09:53+00:00","dateModified":"2024-01-26T11:09:24+00:00","description":"This post explains how to automatically modernize a COBOL application targeting an MVC architecture written in C#\/.NET or J2EE\/Java.","breadcrumb":{"@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/morphis-tech.com\/blog\/cobol-mvc\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#primaryimage","url":"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/0207.cobol_4B6BBE64.jpg","contentUrl":"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2017\/06\/0207.cobol_4B6BBE64.jpg","width":770,"height":335,"caption":"COBOL Modernization"},{"@type":"BreadcrumbList","@id":"https:\/\/morphis-tech.com\/blog\/cobol-mvc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/morphis-tech.com\/blog\/"},{"@type":"ListItem","position":2,"name":"COBOL to MVC &#8211; C#\/.NET or J2EE\/Java"}]},{"@type":"WebSite","@id":"https:\/\/morphis-tech.com\/blog\/#website","url":"https:\/\/morphis-tech.com\/blog\/","name":"Legacy Modernization - Blog","description":"Legacy to Cloud","publisher":{"@id":"https:\/\/morphis-tech.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/morphis-tech.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/morphis-tech.com\/blog\/#organization","name":"Morphis Tech","url":"https:\/\/morphis-tech.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/morphis-tech.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2024\/06\/Logo_Blog_2024-1.svg","contentUrl":"https:\/\/morphis-tech.com\/blog\/wp-content\/uploads\/2024\/06\/Logo_Blog_2024-1.svg","width":344,"height":51,"caption":"Morphis Tech"},"image":{"@id":"https:\/\/morphis-tech.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/morphis_technologies\/"]},{"@type":"Person","@id":"https:\/\/morphis-tech.com\/blog\/#\/schema\/person\/b6d9d149d3091b09f3ee9bd007183275","name":"Bruno Andrade","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/b26e477ef67cba42b8bc646722ca9ae122b8dc44bf6f5bf0c4072c2e36902b59?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b26e477ef67cba42b8bc646722ca9ae122b8dc44bf6f5bf0c4072c2e36902b59?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b26e477ef67cba42b8bc646722ca9ae122b8dc44bf6f5bf0c4072c2e36902b59?s=96&d=mm&r=g","caption":"Bruno Andrade"},"url":"https:\/\/morphis-tech.com\/blog\/author\/bruno-andrade\/"}]}},"_links":{"self":[{"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/posts\/680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/comments?post=680"}],"version-history":[{"count":1,"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/posts\/680\/revisions"}],"predecessor-version":[{"id":6900,"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/posts\/680\/revisions\/6900"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/media\/679"}],"wp:attachment":[{"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/media?parent=680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/categories?post=680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/morphis-tech.com\/blog\/wp-json\/wp\/v2\/tags?post=680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}