{"id":303,"date":"2020-06-04T09:03:32","date_gmt":"2020-06-04T09:03:32","guid":{"rendered":"http:\/\/fredborg.org\/?p=303"},"modified":"2020-12-23T20:45:48","modified_gmt":"2020-12-23T20:45:48","slug":"testing-performance-business-central","status":"publish","type":"post","link":"https:\/\/fredborg.org\/?p=303","title":{"rendered":"Testing Performance Business Central"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">There are a couple of ways of testing performance in Business Central, you of cause have the manual testing where you go through your features using the UI, this way of testing can be very slow &#x1f40c; however you should always perform this type of testing since it will give the most reliable picture of how everything is running. Next, you have the ability to use Applications insight which can monitor your whole application and is a very powerful tool, however, this is more for monitoring your Business Central to make sure everything runs as expected, and not really a testing tool. The last way of testing your extension is to use unit tests, with functions specifically written to be able to test the performance of your code. In this post, we will focus on the last method of testing, by using Unit Tests. All the source code can be found here: <a href=\"https:\/\/dfredborg.visualstudio.com\/Business%20Central\/_git\/Business%20Central?version=GBTestingPerformance\" rel=\"noreferrer noopener\" target=\"_blank\">https:\/\/dfredborg.visualstudio.com\/Business%20Central\/_git\/Business%20Central?version=GBTestingPerformance<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Writing Unit Tests to test performance it pretty straight forward, because Microsoft has given us a way to check our SessionInformation and inside the SessionInformation they have given us two methods one called SqlStatementsExecuted() and the other called SqlRowsRead() which both gives us a way to see how much data is sent between the user interface and the SQL database. &#x2764;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The SqlRowsRead and the SqlStatementsExecuted will tell you the total amount of either reads or executions since the start of the session. So to make any kind of sense you need to know the number of calls that your code executes, to do this you must call the functions before and after your code and get the difference, a simple example could be to see how many reads goes into a loop vs. a GET; I know it is stupid but it is just to keep it simple <a href=\"https:\/\/emojipedia.org\/winking-face\/\" rel=\"noreferrer noopener\" target=\"_blank\">&#x1f609;<\/a><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Test]\n&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;SQlReadFindSet()\n&nbsp;&nbsp;&nbsp;&nbsp;var\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customer:&nbsp;Record&nbsp;Customer;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadBefore:&nbsp;BigInteger;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadAfter:&nbsp;BigInteger;\n&nbsp;&nbsp;&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadBefore&nbsp;:=&nbsp;SessionInformation.SqlRowsRead();\n\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Customer.FindSet()&nbsp;then\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repeat\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;until&nbsp;Customer.Next()&nbsp;=&nbsp;0;\n\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadAfter&nbsp;:=&nbsp;SessionInformation.SqlRowsRead();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Error(format(SqlRowsReadAfter&nbsp;-&nbsp;SqlRowsReadBefore));\n\n&nbsp;&nbsp;&nbsp;&nbsp;end;\n\n\n[Test]\n&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;SQlReadGet()\n&nbsp;&nbsp;&nbsp;&nbsp;var\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customer:&nbsp;Record&nbsp;Customer;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadBefore:&nbsp;BigInteger;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadAfter:&nbsp;BigInteger;\n&nbsp;&nbsp;&nbsp;&nbsp;begin\n\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadBefore&nbsp;:=&nbsp;SessionInformation.SqlRowsRead();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customer.Get('10000');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlRowsReadAfter&nbsp;:=&nbsp;SessionInformation.SqlRowsRead();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Error(format(SqlRowsReadAfter&nbsp;-&nbsp;SqlRowsReadBefore));\n&nbsp;&nbsp;&nbsp;&nbsp;\nend;\n\n\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As you would expect then SQLReadGet will return 1 and the SQLReadFindSet will return the number of customers.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"888\" height=\"53\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_CNjrk3sJP6.png\" alt=\"\" class=\"wp-image-304\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_CNjrk3sJP6.png 888w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_CNjrk3sJP6-300x18.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_CNjrk3sJP6-768x46.png 768w\" sizes=\"auto, (max-width: 888px) 100vw, 888px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now while this code might not tell us much, it does show us how you can use it. What you would do in the real world is that you would set up a threshold, where you would test that your code does not perform more than a certain limit of reads, and if it does your unit test should fail. &#x2714;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Test]\nprocedure&nbsp;SQlReadTestReadLimitGet()\nvar\n&nbsp;&nbsp;Customer:&nbsp;Record&nbsp;Customer;\n&nbsp;&nbsp;SqlRowsReadBefore:&nbsp;BigInteger;\n&nbsp;&nbsp;SqlRowsReadAfter:&nbsp;BigInteger;\nbegin\n&nbsp;&nbsp;SqlRowsReadBefore&nbsp;:=&nbsp;SessionInformation.SqlRowsRead();\n&nbsp;&nbsp;Customer.Get('10000');\n&nbsp;&nbsp;SqlRowsReadAfter&nbsp;:=&nbsp;SessionInformation.SqlRowsRead();\n&nbsp;&nbsp;if&nbsp;SqlRowsReadAfter&nbsp;-&nbsp;SqlRowsReadBefore&nbsp;&gt;&nbsp;1&nbsp;then\n&nbsp;&nbsp;&nbsp;&nbsp;Error('Too&nbsp;many&nbsp;reads:&nbsp;'&nbsp;+&nbsp;format(SqlRowsReadAfter&nbsp;-&nbsp;SqlRowsReadBefore));\nend;\n<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"789\" height=\"31\" src=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_Jya2qaqh8l.png\" alt=\"\" class=\"wp-image-305\" srcset=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_Jya2qaqh8l.png 789w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_Jya2qaqh8l-300x12.png 300w, https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/brave_Jya2qaqh8l-768x30.png 768w\" sizes=\"auto, (max-width: 789px) 100vw, 789px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The SqlStatementsExecuted() works in the same way as the SqlRowRead() with the only difference being that it counts the number of statements executed.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Test]\n&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;SQlExcecuteValidate()\n&nbsp;&nbsp;&nbsp;&nbsp;var\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customer:&nbsp;Record&nbsp;Customer;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlExecutedBefore:&nbsp;BigInteger;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlExecutedAfter:&nbsp;BigInteger;\n&nbsp;&nbsp;&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlExecutedBefore&nbsp;:=&nbsp;SessionInformation.SqlStatementsExecuted();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customer.Get('10000');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customer.Validate(Name,&nbsp;'NewNameValidate');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customer.modify(true);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlExecutedAfter&nbsp;:=&nbsp;SessionInformation.SqlStatementsExecuted();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Error(format(SqlExecutedAfter&nbsp;-&nbsp;SqlExecutedBefore));\n&nbsp;&nbsp;&nbsp;&nbsp;\n    end;\n\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So as you can see then you can use unit tests to make sure that your code runs as smoothly as possible, and while it might be difficult to figure out what your threshold should be, once you figure it out, it is a quick way to make sure that your code does not make unnecessary reads and executions. Well, that was it for this Thursday Nugget follow up until next time stay safe. <a rel=\"noreferrer noopener\" href=\"https:\/\/emojipedia.org\/face-with-medical-mask\/\" target=\"_blank\">&#x1f637;<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\"  id=\"_ytid_73368\"  width=\"1140\" height=\"641\"  data-origwidth=\"1140\" data-origheight=\"641\" src=\"https:\/\/www.youtube.com\/embed\/4Zct9ygr4IQ?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe>\n<\/div><\/figure>\n\n\n\n\n\n<p class=\"wp-block-paragraph\">You can find Microsofts documentation here: <a href=\"https:\/\/docs.microsoft.com\/en-us\/dynamics365\/business-central\/dev-itpro\/performance\/performance-developer#testing-and-validating-performance\" rel=\"noreferrer noopener\" target=\"_blank\">https:\/\/docs.microsoft.com\/en-us\/dynamics365\/business-central\/dev-itpro\/performance\/performance-developer#testing-and-validating-performance<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are a couple of ways of testing performance in Business Central, you of cause have the manual testing where&#8230; <a class=\"read-more\" href=\"https:\/\/fredborg.org\/?p=303\" rel=\"nofollow\"> Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":314,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,1],"tags":[],"class_list":["post-303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-business-central","category-uncategorized","shapla-grid-item"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Testing Performance Business Central - Fredborg<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fredborg.org\/?p=303\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Testing Performance Business Central - Fredborg\" \/>\n<meta property=\"og:description\" content=\"There are a couple of ways of testing performance in Business Central, you of cause have the manual testing where... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fredborg.org\/?p=303\" \/>\n<meta property=\"og:site_name\" content=\"Fredborg\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-04T09:03:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-23T20:45:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1077\" \/>\n\t<meta property=\"og:image:height\" content=\"472\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"dfredborg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dfredborg\" \/>\n<meta name=\"twitter:site\" content=\"@dfredborg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"dfredborg\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fredborg.org\/?p=303#article\",\"isPartOf\":{\"@id\":\"https:\/\/fredborg.org\/?p=303\"},\"author\":{\"name\":\"dfredborg\",\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\"},\"headline\":\"Testing Performance Business Central\",\"datePublished\":\"2020-06-04T09:03:32+00:00\",\"dateModified\":\"2020-12-23T20:45:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fredborg.org\/?p=303\"},\"wordCount\":520,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\"},\"image\":{\"@id\":\"https:\/\/fredborg.org\/?p=303#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png\",\"articleSection\":[\"Business Central\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fredborg.org\/?p=303#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fredborg.org\/?p=303\",\"url\":\"https:\/\/fredborg.org\/?p=303\",\"name\":\"Testing Performance Business Central - Fredborg\",\"isPartOf\":{\"@id\":\"https:\/\/fredborg.org\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fredborg.org\/?p=303#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fredborg.org\/?p=303#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png\",\"datePublished\":\"2020-06-04T09:03:32+00:00\",\"dateModified\":\"2020-12-23T20:45:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fredborg.org\/?p=303#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fredborg.org\/?p=303\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fredborg.org\/?p=303#primaryimage\",\"url\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png\",\"contentUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png\",\"width\":1077,\"height\":472},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fredborg.org\/?p=303#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fredborg.org\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Testing Performance Business Central\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fredborg.org\/#website\",\"url\":\"https:\/\/fredborg.org\/\",\"name\":\"Fredborg\",\"description\":\"Business Central and Azure\",\"publisher\":{\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fredborg.org\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d\",\"name\":\"dfredborg\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png\",\"contentUrl\":\"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png\",\"width\":256,\"height\":256,\"caption\":\"dfredborg\"},\"logo\":{\"@id\":\"https:\/\/fredborg.org\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:fredborg.org\",\"https:\/\/www.linkedin.com\/in\/dfredborg\/\",\"https:\/\/x.com\/dfredborg\",\"https:\/\/www.youtube.com\/channel\/UCUNZglLDMjBlOK_T9JtI8UA\"],\"url\":\"https:\/\/fredborg.org\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Testing Performance Business Central - Fredborg","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:\/\/fredborg.org\/?p=303","og_locale":"en_US","og_type":"article","og_title":"Testing Performance Business Central - Fredborg","og_description":"There are a couple of ways of testing performance in Business Central, you of cause have the manual testing where... Read more","og_url":"https:\/\/fredborg.org\/?p=303","og_site_name":"Fredborg","article_published_time":"2020-06-04T09:03:32+00:00","article_modified_time":"2020-12-23T20:45:48+00:00","og_image":[{"width":1077,"height":472,"url":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png","type":"image\/png"}],"author":"dfredborg","twitter_card":"summary_large_image","twitter_creator":"@dfredborg","twitter_site":"@dfredborg","twitter_misc":{"Written by":"dfredborg","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fredborg.org\/?p=303#article","isPartOf":{"@id":"https:\/\/fredborg.org\/?p=303"},"author":{"name":"dfredborg","@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d"},"headline":"Testing Performance Business Central","datePublished":"2020-06-04T09:03:32+00:00","dateModified":"2020-12-23T20:45:48+00:00","mainEntityOfPage":{"@id":"https:\/\/fredborg.org\/?p=303"},"wordCount":520,"commentCount":0,"publisher":{"@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d"},"image":{"@id":"https:\/\/fredborg.org\/?p=303#primaryimage"},"thumbnailUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png","articleSection":["Business Central"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fredborg.org\/?p=303#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fredborg.org\/?p=303","url":"https:\/\/fredborg.org\/?p=303","name":"Testing Performance Business Central - Fredborg","isPartOf":{"@id":"https:\/\/fredborg.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fredborg.org\/?p=303#primaryimage"},"image":{"@id":"https:\/\/fredborg.org\/?p=303#primaryimage"},"thumbnailUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png","datePublished":"2020-06-04T09:03:32+00:00","dateModified":"2020-12-23T20:45:48+00:00","breadcrumb":{"@id":"https:\/\/fredborg.org\/?p=303#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fredborg.org\/?p=303"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fredborg.org\/?p=303#primaryimage","url":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png","contentUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2020\/06\/TestingPerformance.png","width":1077,"height":472},{"@type":"BreadcrumbList","@id":"https:\/\/fredborg.org\/?p=303#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fredborg.org\/"},{"@type":"ListItem","position":2,"name":"Testing Performance Business Central"}]},{"@type":"WebSite","@id":"https:\/\/fredborg.org\/#website","url":"https:\/\/fredborg.org\/","name":"Fredborg","description":"Business Central and Azure","publisher":{"@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fredborg.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fredborg.org\/#\/schema\/person\/59a5520cbf04c6bd1267f30b4488e71d","name":"dfredborg","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fredborg.org\/#\/schema\/person\/image\/","url":"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png","contentUrl":"https:\/\/fredborg.org\/wp-content\/uploads\/2023\/06\/download.png","width":256,"height":256,"caption":"dfredborg"},"logo":{"@id":"https:\/\/fredborg.org\/#\/schema\/person\/image\/"},"sameAs":["https:fredborg.org","https:\/\/www.linkedin.com\/in\/dfredborg\/","https:\/\/x.com\/dfredborg","https:\/\/www.youtube.com\/channel\/UCUNZglLDMjBlOK_T9JtI8UA"],"url":"https:\/\/fredborg.org\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts\/303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=303"}],"version-history":[{"count":1,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts\/303\/revisions"}],"predecessor-version":[{"id":306,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/posts\/303\/revisions\/306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=\/wp\/v2\/media\/314"}],"wp:attachment":[{"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fredborg.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}