{"id":3019,"date":"2012-06-15T13:15:05","date_gmt":"2012-06-15T11:15:05","guid":{"rendered":"http:\/\/contoso.se\/blog\/?p=3019"},"modified":"2012-06-15T13:15:05","modified_gmt":"2012-06-15T11:15:05","slug":"vm-lifecycle-in-service-manager-with-orchestrator-magic","status":"publish","type":"post","link":"http:\/\/contoso.se\/blog\/?p=3019","title":{"rendered":"VM lifecycle in Service Manager with Orchestrator magic"},"content":{"rendered":"<p><span>A couple of weeks ago I was speaking at a\u00c2\u00a0System Center 2012 event in Stockholm\/Sweden. My session was around Orchestrator and Service Manager integration. On stage I created and demo a scenario where Service Manager, Virtual Machine Manager and Orchestrator was used to administrate <span>lifecycle<\/span> of virtual machines and virtual services. My laptop only hosted Orchestrator and Service Manager so in many of the example <span>runbooks<\/span> I\u00c2\u00a0only create a computer object in Service Manager. But as you realize you could re-place that with any kind of Virtual Machine Manager activity. In this post I will\u00c2\u00a0share with you the demo files, <span>runbooks<\/span> and\u00c2\u00a0management packs I used.<\/span><\/p>\n<p><span>The demo scenario was that someone could order a virtual machine or a service (service template)\u00c2\u00a0from the self service portal in Service Manager. Orchestrator and Virtual Machine Manager then created the machines and so on. When you order a new virtual machine you needed to input a expire date,\u00c2\u00a0for how long will you need the virtual machine. You also need to input a cost center, to know who should approve\u00c2\u00a0and how will pay for it.\u00c2\u00a0When a virtual machine is close to the expire date it is picked up by a <span>runbook<\/span> that notify the owner. The owner can use the portal to extend the date or simple don&#8217;t.\u00c2\u00a0If the machine pass the expire date Orchestrator will shut it down. When it has been shut down for some\u00c2\u00a0months it is deleted.\u00c2\u00a0The demo also showed how to generate reports to follow up which how much each cost center should pay. When the order is complete the user can see the result in the Service Manager portal<\/span><\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_07.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3078\" title=\"20120610_07\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_07-300x110.jpg\" alt=\"\" width=\"300\" height=\"110\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_07-300x110.jpg 300w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_07-1024x377.jpg 1024w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_07.jpg 1073w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_08.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3083\" title=\"20120610_08\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_08-246x300.jpg\" alt=\"\" width=\"246\" height=\"300\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_08-246x300.jpg 246w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_08.jpg 415w\" sizes=\"auto, (max-width: 246px) 100vw, 246px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>The\u00c2\u00a0cool thing about this demo is not only that we can create any kind of virtual environment with Virtual Machine Manager 2012, instead of just deploying machines we can\u00c2\u00a0follow up on who order, who approved and we can also see how much each cost center is using.<\/p>\n<p>The solution is divided into multiple steps<\/p>\n<ol>\n<li><span>Extend the Windows Computer CI class in Service Manager with a couple of extra properties, like order date, cost center, owner, expire date, <span>approver<\/span> and cost. (MP attached)<\/span><\/li>\n<li>Create a new CI class in Service Manager to store cost information (MP attached)<\/li>\n<li><span>Create a <span>runbook<\/span> that creates computer objects (export file attached)<\/span><\/li>\n<li>Publish a service in the self-service portal in service manager (not included in this post, ping me if you need step by step guide)<\/li>\n<li>Create a report to follow up number of orders and total cost per cost center<\/li>\n<li><span>Create <span>runbooks<\/span> to administrate removal of expired objects (export file attached)<\/span><\/li>\n<\/ol>\n<h4>Extend the Windows Computer Class<\/h4>\n<p>To add extra attributes to all Windows Computer CI objects in Service Manager we need to extend the Windows Computer class. We can do that with the Service Manager Authoring Tool, download here. (<a href=\"http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=28726\"><span>http:\/\/www.microsoft.com\/en-us\/download\/details.<span>aspx<\/span>?id=28726<\/span><\/a>). When the Authoring Tool is installed follow these steps to extend the Windows Computer class<\/p>\n<ol>\n<li><span>We need to seal the management pack we will create in the Authoring Tool. If we don&#8217;t seal it we cant use it with Orchestrator or the data warehouse. To seal it we need a <span>keyfile<\/span>. SN.EXE (.NET Framework Strong Name Utility) is a tool that we can use to generate that key file. Open a command prompt and navigate to C:\\Program Files (x86)\\Microsoft <span>SDKs<\/span>\\Windows\\v6.0A\\bin<\/span><\/li>\n<li><span>To generate a key pair run, SN.EXE -k C:\\temp\\<span>snKey<\/span>.<span>snk<\/span><\/span><\/li>\n<li>Start Service Manager Authoring Tool<\/li>\n<li>From the File menu choose New<\/li>\n<li><span>New Management Pack, save the new management pack in a suitable folder, for example C:\\TEMP\\<span>Contoso<\/span>.<span>WinCompExt<\/span><\/span><\/li>\n<li>Use the Class Browser to find the Windows Computer class, right-click it and select View<\/li>\n<li>In the Management Pack Explorer pane, note all the default properties. Right-click on the Windows Computer class and select Extend Class<\/li>\n<li><span>Target Management Pack, select <span>Contoso<\/span>.<span>WinCompExt<\/span> to save the extension in the management pack<\/span><\/li>\n<li>Click Create Property and add the following properties. Edit each property in the Details pane\n<table id=\"wp-table-reloaded-id-1-no-1\" class=\"wp-table-reloaded wp-table-reloaded-id-1\">\n<thead>\n\t<tr class=\"row-1 odd\">\n\t\t<th class=\"column-1\">Internal Name<\/th><th class=\"column-2\">Name<\/th><th class=\"column-3\">Data Type<\/th><th class=\"column-4\">Note<\/th>\n\t<\/tr>\n<\/thead>\n<tbody>\n\t<tr class=\"row-2 even\">\n\t\t<td class=\"column-1\">ContosoOrderDate<\/td><td class=\"column-2\">Order Date<\/td><td class=\"column-3\">Date Time<\/td><td class=\"column-4\"><\/td>\n\t<\/tr>\n\t<tr class=\"row-3 odd\">\n\t\t<td class=\"column-1\">ContosoCostCenter<\/td><td class=\"column-2\">Cost Center<\/td><td class=\"column-3\">String<\/td><td class=\"column-4\"><\/td>\n\t<\/tr>\n\t<tr class=\"row-4 even\">\n\t\t<td class=\"column-1\">ContosoOwner<\/td><td class=\"column-2\">Owner<\/td><td class=\"column-3\">String<\/td><td class=\"column-4\"><\/td>\n\t<\/tr>\n\t<tr class=\"row-5 odd\">\n\t\t<td class=\"column-1\">ContosoExpireDate<\/td><td class=\"column-2\">Expire Date<\/td><td class=\"column-3\">Date Time<\/td><td class=\"column-4\"><\/td>\n\t<\/tr>\n\t<tr class=\"row-6 even\">\n\t\t<td class=\"column-1\">ContosoApprover<\/td><td class=\"column-2\">Approver<\/td><td class=\"column-3\">String<\/td><td class=\"column-4\"><\/td>\n\t<\/tr>\n\t<tr class=\"row-7 odd\">\n\t\t<td class=\"column-1\">ContosoCost<\/td><td class=\"column-2\">Cost<\/td><td class=\"column-3\">Integer<\/td><td class=\"column-4\"><\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<li>Save your management pack<\/li>\n<li><span>In the Management Pack Explorer pane, right-click <span>Contoso<\/span>.<span>WinCompExt<\/span> and select Seal Management Pack<\/span><\/li>\n<li>Seal Management Pack,<br \/>\nOutput Directory: C:\\TEMP<br \/>\n<span> Key File:\u00c2\u00a0C:\\temp\\<span>snKey<\/span>.<span>snk<\/span><\/span><br \/>\n<span> Company: <span>Contoso<\/span><\/span><br \/>\nClick Seal and then Close<\/li>\n<li><span>Start Service Manager Console and import the sealed <span>Contoso<\/span>.<span>WinCompExt<\/span> management pack from C:\\temp\\<span>Contoso<\/span>.<span>WinCompExt<\/span>.mp (make sure to select the .MP management pack, MP=Sealed XML=Unsealed)<\/span><\/li>\n<li>Close the Service Manager Console and open it again, this will re-load class information<\/li>\n<li><span>Navigate to Configuration Items\/Computers\/All Windows Computers and open a computer. Note all the new properties that are shown on the Extensions tab. We have now extended the Windows Computer class with the properties we need for the computer <span>lifecycle<\/span> demo.<\/span><\/li>\n<\/ol>\n<div><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_01.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3046\" title=\"20120610_01\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_01-284x300.jpg\" alt=\"\" width=\"284\" height=\"300\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_01-284x300.jpg 284w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_01.jpg 300w\" sizes=\"auto, (max-width: 284px) 100vw, 284px\" \/><\/a><\/div>\n<div><\/div>\n<div>.<\/div>\n<div><\/div>\n<div><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_02.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3047\" title=\"20120610_02\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_02-248x300.jpg\" alt=\"\" width=\"248\" height=\"300\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_02-248x300.jpg 248w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_02.jpg 273w\" sizes=\"auto, (max-width: 248px) 100vw, 248px\" \/><\/a><\/div>\n<div><\/div>\n<h4><span>The <span>pricelist<\/span><\/span><\/h4>\n<p><span>One of the properties we extended the Windows Computer class with is Cost. My idea is to use this field to show the monthly price of the configuration item, the computer. We could input that price manual but we can also build a price list inside of Service Manager. To do that we can use the Authoring Tool to create a new CI class, <span>Contoso<\/span> Price List.<\/span><\/p>\n<ol>\n<li>Start Service Manager Authoring Tool<\/li>\n<li><span>From the File menu create a new management pack, for example C:\\TEMP\\<span>ContosoCost<\/span><\/span><\/li>\n<li>In the Management Pack Explorer pane, right-click Classes and select Create Configuration Item Class<\/li>\n<li><span>Create Class, input <span>ContosoCostItem<\/span> as internal class name<\/span><\/li>\n<li>In the Details pane change the Name to Cost Item<\/li>\n<li>Delete default Property_4<\/li>\n<li><span>Add two properties, <span>AvailabilityLevel<\/span> and Cost. Change <span>AvailabilityLevel<\/span> name to Availability Level. Change data type to Integer for the Cost property. Change Key to TRUE on the Availability Level property<\/span><\/li>\n<li><span>Save the <span>managemente<\/span> pack<\/span><\/li>\n<li>Seal the management pack the same way we did with the first management pack<\/li>\n<li>Import the management pack into Service Manager. Remember to import the sealed version, MP file.<\/li>\n<li>Restart the Service Manager Console<\/li>\n<li>Navigate to Configuration Items<\/li>\n<li><span>Create a new folder, name it Price List. Create a new management pack, for example <span>Contoso<\/span>, and store the folder in it<\/span><\/li>\n<li>Select the Price List folder and click Create View in the Tasks pane<\/li>\n<li>Create View<br \/>\nName: All Items<br \/>\n<span> Criteria: All objects of the <span>ContosoCost<\/span> Item class, where object status does not equals Pending Delete<\/span><br \/>\nDisplay: Availability Level and Cost<\/li>\n<li><span>Select the new All Items view and click Create <span>Contoso<\/span> Cost Item from the Tasks pane<\/span><br \/>\n<span> <span>DisplayName<\/span>: Gold<\/span><br \/>\nAvailability Level: Gold<br \/>\nCost: 100<\/li>\n<li><span>Click Create <span>Contoso<\/span> Cost Item from the Tasks pane<\/span><br \/>\n<span> <span>Contoso<\/span> Cost Item Properties<\/span><br \/>\n<span> <span>DisplayName<\/span>: Silver<\/span><br \/>\nAvailability Level: Silver<br \/>\nCost: 70<\/li>\n<li><span>Click Create <span>Contoso<\/span> Cost Item from the Tasks pane<\/span><br \/>\n<span> <span>Contoso<\/span> Cost Item Properties<\/span><br \/>\n<span> <span>DisplayName<\/span>: Bronze<\/span><br \/>\nAvailability Level: Bronze<br \/>\nCost: 40<\/li>\n<li>Click OK<\/li>\n<\/ol>\n<div><span>We have now created a new CI class and 3 instances of it.\u00c2\u00a0Next step is to create a <span>runbook<\/span> that creates computer accounts in Active Directory. This <span>runbook<\/span> will be <span>syncronized<\/span> to Service Manager and used as a <span>runbook<\/span> activity. The <span>runbook<\/span> will read the price for each computer that is order from the new CI class we just created.<\/span><\/div>\n<div><\/div>\n<div><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_03.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3045\" title=\"20120610_03\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_03-300x152.jpg\" alt=\"\" width=\"300\" height=\"152\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_03-300x152.jpg 300w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_03.jpg 328w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/div>\n<div><\/div>\n<h4><span><span>Runbooks<\/span><\/span><\/h4>\n<p><span>This example use a number of <span>runbooks<\/span>, all\u00c2\u00a0included in the export file attached to this <span>blogpost<\/span>. I will explain each one of them and you can import them and look at the in the Orchestrator <span>Runbook<\/span> Designer<\/span><\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_04.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3063\" title=\"20120610_04\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_04-300x49.jpg\" alt=\"\" width=\"300\" height=\"49\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_04-300x49.jpg 300w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_04.jpg 775w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<ul>\n<li><span>\u00c2\u00a0700.10 Cost. This <span>runbook<\/span> will get the correct price for the new computer based on the price list in Service Manager<\/span><\/li>\n<li><span>700.11 Count Machines. This <span>runbook<\/span> counts existing machines to figure out a suitable computer name for the new machine<\/span><\/li>\n<li><span>700.2 Update <span>Approver<\/span>. This <span>runbook<\/span> updates the <span>approver<\/span> step in the service request template based on the cost center. The <span>runbook<\/span> attach <span>approver<\/span> to the manual approval step<\/span><\/li>\n<li>700.3 Create VM (picture) creates the new computer<\/li>\n<li>700.4 Update Service Request, updated the Description attribute on the Service Request. This is used when the machine is create to communicate the new computer name to the user. The user will see this in the self-service portal<\/li>\n<li><span>700.5 This one will find all <span>VMs<\/span> that are close to expire date (2 months or less) and send a e-mail to the owner of the machine. Also flag the virtual machine that e-mail has been sent<\/span><\/li>\n<li><span>700.6 Get Cost Center. This <span>runbook<\/span> gets <span>approver<\/span> for each cost center. This could be done with a external database or any other way<\/span><\/li>\n<li>700.7 When a VM have passed expire date it is shut down in Virtual Machine Manager<\/li>\n<li>700.8 Deleted expired VM, when the VM has been shutdown for 2 months it is deleted<\/li>\n<li><span>700.9 Update expire date, if the user order a new expire date for the computer in the portal, this <span>runbook<\/span> will update the virtual machine with the new expire date<\/span><\/li>\n<li><span>500.1-500.3, these <span>runbooks<\/span> are used to generate the HTML based report. One master <span>runbook<\/span> and then one <span>runbook<\/span> for each cost center<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h4>Report<\/h4>\n<p><span>Reporting have changed a lot with Service Manager 2012. We now have cubes to analyze the data and we use Excel to easy drag and drop fields to build table. The first image below show a table\u00c2\u00a0with everything that cost center 2 is running right now.\u00c2\u00a0If you want to sum everything into a one cell, total cost, it is a bit more difficult now when we are running cubes. We need to extend the cube to include that field. If you don&#8217;t know how to do that you could solve it with SQL reports or using Orchestrator. In the second image below you can see a HTML based report generated by a couple of <span>runbooks<\/span> in Orchestrator.<\/span><\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_05.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3071\" title=\"20120610_05\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_05-300x210.jpg\" alt=\"\" width=\"300\" height=\"210\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_05-300x210.jpg 300w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_05-1024x718.jpg 1024w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_05.jpg 1148w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_06.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3072\" title=\"20120610_06\" src=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_06-300x75.jpg\" alt=\"\" width=\"300\" height=\"75\" srcset=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_06-300x75.jpg 300w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_06-1024x257.jpg 1024w, http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/20120610_06.jpg 1031w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><span><span>Runbooks<\/span>, <\/span><a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/SC12day_demo_wolf.rar\">SC12day_demo_wolf<\/a><br \/>\nManagement packs\u00c2\u00a0<a href=\"http:\/\/contoso.se\/blog\/wp-content\/uploads\/2012\/06\/SC12-day-MPs.zip\"><span>SC12 day <span>MPs<\/span><\/span><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Please note that this is provided \u00e2\u20ac\u0153as is\u00e2\u20ac\u009d with no warranties at all.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A couple of weeks ago I was speaking at a\u00c2\u00a0System Center 2012 event in Stockholm\/Sweden. My session was around Orchestrator and Service Manager integration. On stage I created and demo a scenario where Service Manager, Virtual Machine Manager and Orchestrator was used to administrate lifecycle of virtual machines and virtual services. My laptop only hosted &hellip; <a href=\"http:\/\/contoso.se\/blog\/?p=3019\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[60,25],"tags":[],"class_list":["post-3019","post","type-post","status-publish","format-standard","hentry","category-orchestrator","category-system-center-service-desk"],"_links":{"self":[{"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3019"}],"version-history":[{"count":47,"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3019\/revisions"}],"predecessor-version":[{"id":3084,"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3019\/revisions\/3084"}],"wp:attachment":[{"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3019"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/contoso.se\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}