{"id":4099,"date":"2023-03-06T09:16:59","date_gmt":"2023-03-06T08:16:59","guid":{"rendered":"https:\/\/www.js-soft.com\/?p=4099"},"modified":"2025-11-27T13:28:57","modified_gmt":"2025-11-27T12:28:57","slug":"sap-ui5-adaptation-projekt","status":"publish","type":"post","link":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/","title":{"rendered":"SAP UI5 Adaptation Project"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adaptation projects offer a great way to extend the SAP standard apps. This blog gives an introduction about what requirements have to be met, and it should also serve as a cheat sheet for developers. Thus, the blog is split up into two main sections. The first one ensures feasibility whereas the second part focuses more on the development side of an adaptation project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Feasibility of an Adaptation Project<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Adaptation Project<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Adaptation Projects are used to meet customer requirements in SAP Standard Apps. Examples can be adding custom behavior which will be invoked by pressing an added button to the standard app.<br>Be aware that not every standard app delivered by SAP can be extended with an adaptation project. Only the apps which are developed with SAP UI5 can be extended this way. In the Fiori apps library, it is easy to determine the developing language of the app.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"632\" src=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Fiori_apps-Library-1024x632.png\" alt=\"SAP UI5 Fiori App\" class=\"wp-image-4103\" srcset=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Fiori_apps-Library-1024x632.png 1024w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Fiori_apps-Library-300x185.png 300w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Fiori_apps-Library-768x474.png 768w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Fiori_apps-Library-1536x949.png 1536w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Fiori_apps-Library.png 1794w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Entry of the Fiori apps library which can be extended<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once the criteria are met and the app can be extended with an adaptation project the visual editor comes into place. The visual editor is integrated into the SAP Business Application Studio (SAP BAS) which allows the user to adjust the properties of the standard app as well as to add custom controls and logic. To do so rightclick on the area which should be extended and add your control or logic.<br>There is a safe mode that can be activated, this one should ensure that the extension will work with future system upgrades.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Make the Adaptation project visible<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To test the adaptation project in the original app the launchpad customizing has to be adjusted. Therefore it is best practice to create a new mapping for the routing as well as a new tile which will then open the created variant. Hence, the standard app will still be available if in the deployed extension an error occurs. The target mapping requires the parameter sap-appvariant-id and should look like the following:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"329\" src=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Target_mapping-1024x329.png\" alt=\"new mapping\" class=\"wp-image-4108\" style=\"aspect-ratio:16\/9;object-fit:cover;width:800px;height:auto\" srcset=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Target_mapping-1024x329.png 1024w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Target_mapping-300x96.png 300w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Target_mapping-768x247.png 768w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Target_mapping-1536x494.png 1536w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Target_mapping-2048x658.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Target mapping of an adaptation project<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once the target mapping is created the app variant (the adaptation project) can be called by using the # of the original app in combination with the URL parameter sap-appvar-id: #YAIFMessage-display?sap-appvar-id=customer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To ensure, that the adaptation project is called the inspector is required. Above the directory of the developed and standard apps there will be another directory for adaptation projects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Debug extension<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In the inspector, you then can see that a directory<em> lrep\/flex\/modules<\/em> which contain the extension.<br>In this directory, you can find the coding of your adaptation project. If this entry is not listed then it is a hint that there might be a syntax error within your extension.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"736\" height=\"390\" src=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Irep_flex_modules.png\" alt=\"inspector\" class=\"wp-image-4112\" srcset=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Irep_flex_modules.png 736w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Irep_flex_modules-300x159.png 300w\" sizes=\"(max-width: 736px) 100vw, 736px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Useful tools by SAP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SAP delivered some useful tools to further investigate an app. As a reminder those tools are listed with the corresponding keyboard shortcuts.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"196\" src=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Shortcuts-1024x196.png\" alt=\"keyboard shortcuts\" class=\"wp-image-4116\" srcset=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Shortcuts-1024x196.png 1024w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Shortcuts-300x57.png 300w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Shortcuts-768x147.png 768w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Shortcuts-1536x294.png 1536w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Shortcuts.png 1724w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><strong>Keyboard Shortcuts der SAP<\/strong>:<strong><a href=\"https:\/\/sapui5.hana.ondemand.com\/sdk\/#\/topic\/154844c3ac2a4675a37aeb6259a5e034.html\"> SAPUI5 SDK Demo Kit<\/a><\/strong><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Development of an Adaptation Project<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Extension coding<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In the adaptation project it is possible to either override the methods of the extended controller (be careful on this one), to define your methods and execute them as well as to override the lifecycle methods of the standard app. When overriding lifecycle methods be aware that your coding in the extension will not replace the coding of the standard app \u2013 rather your coding will be called before or after the lifecycle method of the standard app. See the following picture as a demonstration.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"703\" height=\"427\" src=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Lifecycle_execution_order.png\" alt=\"Override the lifecycle methods of the standard app\" class=\"wp-image-4123\" srcset=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Lifecycle_execution_order.png 703w, https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/02\/Lifecycle_execution_order-300x182.png 300w\" sizes=\"(max-width: 703px) 100vw, 703px\" \/><figcaption class=\"wp-element-caption\">Source: <a href=\"https:\/\/stackoverflow.com\/questions\/67955167\/ui5-extension-of-controller-and-lifecycle-methods\/67971791#67971791\" target=\"_blank\" rel=\"noreferrer noopener\">UI5 extension of controller and lifecycle methods<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>return ControllerExtension.extend(\"customer.&lt;namespace&gt;.ExcelReport\", {\n    override:{\n        onInit: function(oEvent){\n            ...\n        },\n        onAfterRendering: function(oEvent){\n            ...\n        }\n    },\n    myMethod(){\n      ...\n    },\n    anotherMethod(){\n      ...\n    }\n})<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The context of the controller extension can be retrieved via <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> this.base.extension.&lt;namespace&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">(in the debugger). The context of the extented controller can be retrieved via<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>this.base.getView().getController()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Contexts and extension Methods<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The following information lists the commands to navigate between the contexts of the controller and the extension. Hence, use the controller context of the original app as well as the context of the extension.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Context of the extension<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>this.base.extension.&lt;namespace&gt;\nthis.base.extension.customer.SysMsgMonitorOverview.OverviewExtension<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">this Context of the current controller<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>this.base.&lt;variable&gt; = 'abc'<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Controller of the current view<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>this.base.getView().getController()<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Helpfull skills<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Further helpful skills which might come in handy are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UI5 Eventhandling<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sap.ui.getCore().getEventBus().publish(\"YourEventChannel\", \"getAllData\", {})\nsap.ui.getCore().getEventBus().subscribe(\n                        \"YourEventChannel\",\n                        \"getAllData\",\n                        this.getAllData,\n                        this);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Basic jQuery\n<ul class=\"wp-block-list\">\n<li>to retrieve a control if it is available (fully rendered and with available data)<\/li>\n\n\n\n<li>to automatically scroll up and down in an section<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var intervalId = setInterval(\n    () =&gt; {\n        var oExtContext = this.base.extension.customer.namespace.OverviewExtension\n        \/\/ if the cards (especially the headers) are rendered\n        if ($(\"div&#91;id*='cardHeader']\")&#91;0]) { \n            ...\n            window.clearInterval(intervalId);\n        }\n      \n    },1000, this, intervalId);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Problems which can occur<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>More than one extension project could be required while navigating to a detail view (check the app-ID after navigating)<\/li>\n\n\n\n<li>If the standard app uses the OData v4 Model it can be very hard to retrieve the data which are binded to the view. Since the Model \/ Context methods <em>getProperty()<\/em> and <em>getObject()<\/em> are not available in the v4 Model. On a binding (get it from the view) it is possible to use the method <em>requestObject() <\/em>which then will return a promise.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>await this.base.getView().byId(&lt;id&gt;).getBindingContext().requestObject()\n    .then(function(oData) {\n        ...\n    })\n    .catch(function(oErr) {\n        ...\n    })<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This post is part IV of a blog series.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Read also part I: <a href=\"https:\/\/www.js-soft.com\/fiori-introduction\/\" target=\"_blank\" rel=\"noreferrer noopener\">Fiori Introduction <\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">part II: <a href=\"https:\/\/www.js-soft.com\/fiori-customization\/\" target=\"_blank\" rel=\"noreferrer noopener\">Fiori Customization<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">part III: <a href=\"https:\/\/www.js-soft.com\/extensibility-scenario-with-key-user-tools\/\" target=\"_blank\" rel=\"noreferrer noopener\">Extensibility Scenario With Key User Tools<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are times in which the functionality of an SAP Fiori App is not enough. In this blog we investigate if it is possible to add an adaptation project to the corresponding Fiori app. Furthermore, we provide tips and best practices for developers.<\/p>\n","protected":false},"author":6,"featured_media":14001,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[21],"tags":[],"class_list":["post-4099","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fiori-en"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SAP UI5 Adaptation Project - j&amp;s-soft<\/title>\n<meta name=\"description\" content=\"SAP Fiori Apps: In this blog we investigate if it is possible to add an adaptation project to the corresponding Fiori app.\" \/>\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.js-soft.com\/en\/sap-ui5-adaptation-projekt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SAP UI5 Adaptation Project - j&amp;s-soft\" \/>\n<meta property=\"og:description\" content=\"SAP Fiori Apps: In this blog we investigate if it is possible to add an adaptation project to the corresponding Fiori app.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/\" \/>\n<meta property=\"og:site_name\" content=\"j&amp;s-soft\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-06T08:16:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-27T12:28:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/03\/Fiori-Adaption-Project.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1860\" \/>\n\t<meta property=\"og:image:height\" content=\"1084\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thorsten M\u00fcller\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thorsten M\u00fcller\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SAP UI5 Adaptation Project - j&amp;s-soft","description":"SAP Fiori Apps: In this blog we investigate if it is possible to add an adaptation project to the corresponding Fiori app.","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.js-soft.com\/en\/sap-ui5-adaptation-projekt\/","og_locale":"en_US","og_type":"article","og_title":"SAP UI5 Adaptation Project - j&amp;s-soft","og_description":"SAP Fiori Apps: In this blog we investigate if it is possible to add an adaptation project to the corresponding Fiori app.","og_url":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/","og_site_name":"j&amp;s-soft","article_published_time":"2023-03-06T08:16:59+00:00","article_modified_time":"2025-11-27T12:28:57+00:00","og_image":[{"width":1860,"height":1084,"url":"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/03\/Fiori-Adaption-Project.png","type":"image\/png"}],"author":"Thorsten M\u00fcller","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thorsten M\u00fcller","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/#article","isPartOf":{"@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/"},"author":{"name":"Thorsten M\u00fcller","@id":"https:\/\/www.js-soft.com\/en\/#\/schema\/person\/df2ce7ed8b79e66d730f6aa7c28d10a4"},"headline":"SAP UI5 Adaptation Project","datePublished":"2023-03-06T08:16:59+00:00","dateModified":"2025-11-27T12:28:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/"},"wordCount":810,"publisher":{"@id":"https:\/\/www.js-soft.com\/en\/#organization"},"image":{"@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/#primaryimage"},"thumbnailUrl":"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/03\/Fiori-Adaption-Project.png","articleSection":["Fiori"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/","url":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/","name":"SAP UI5 Adaptation Project - j&amp;s-soft","isPartOf":{"@id":"https:\/\/www.js-soft.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/#primaryimage"},"image":{"@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/#primaryimage"},"thumbnailUrl":"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/03\/Fiori-Adaption-Project.png","datePublished":"2023-03-06T08:16:59+00:00","dateModified":"2025-11-27T12:28:57+00:00","description":"SAP Fiori Apps: In this blog we investigate if it is possible to add an adaptation project to the corresponding Fiori app.","breadcrumb":{"@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/#primaryimage","url":"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/03\/Fiori-Adaption-Project.png","contentUrl":"https:\/\/www.js-soft.com\/wp-content\/uploads\/2023\/03\/Fiori-Adaption-Project.png","width":1860,"height":1084,"caption":"Fiori Adaption Project"},{"@type":"BreadcrumbList","@id":"https:\/\/www.js-soft.com\/en\/sap-ui5-adaptation-projekt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/www.js-soft.com\/en\/"},{"@type":"ListItem","position":2,"name":"SAP UI5 Adaptation Project"}]},{"@type":"WebSite","@id":"https:\/\/www.js-soft.com\/en\/#website","url":"https:\/\/www.js-soft.com\/en\/","name":"j&amp;s-soft","description":"IT-Unternehmensberatung f\u00fcr SAP","publisher":{"@id":"https:\/\/www.js-soft.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.js-soft.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.js-soft.com\/en\/#organization","name":"j&amp;s-soft","url":"https:\/\/www.js-soft.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.js-soft.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.js-soft.com\/wp-content\/uploads\/2022\/03\/Logo-js-soft.png","contentUrl":"https:\/\/www.js-soft.com\/wp-content\/uploads\/2022\/03\/Logo-js-soft.png","width":2560,"height":544,"caption":"j&amp;s-soft"},"image":{"@id":"https:\/\/www.js-soft.com\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.js-soft.com\/en\/#\/schema\/person\/df2ce7ed8b79e66d730f6aa7c28d10a4","name":"Thorsten M\u00fcller","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.js-soft.com\/wp-includes\/images\/blank.gif","url":"https:\/\/www.js-soft.com\/wp-includes\/images\/blank.gif","contentUrl":"https:\/\/www.js-soft.com\/wp-includes\/images\/blank.gif","caption":"Thorsten M\u00fcller"},"description":"Thorsten experiences different types of front-end technologies within the SAP cosmos. Open to learn new technologies to be able to choose the correct technique for the desired outcome."}]}},"_links":{"self":[{"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/posts\/4099","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/comments?post=4099"}],"version-history":[{"count":2,"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/posts\/4099\/revisions"}],"predecessor-version":[{"id":15071,"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/posts\/4099\/revisions\/15071"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/media\/14001"}],"wp:attachment":[{"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/media?parent=4099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/categories?post=4099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.js-soft.com\/en\/wp-json\/wp\/v2\/tags?post=4099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}