1"use strict";(self.webpackChunkdocs_arc46_io=self.webpackChunkdocs_arc46_io||[]).push([["7117"],{6081:function(e,n,i){i.r(n),i.d(n,{frontMatter:()=>t,toc:()=>d,default:()=>h,metadata:()=>r,assets:()=>o,contentTitle:()=>a});var r=JSON.parse('{"type":"mdx","permalink":"/squid/releaseNotes/","source":"@site/src/pages/releaseNotes/index.md","title":"Release notes","description":"Backlog","frontMatter":{"toc_min_heading_level":2,"toc_max_heading_level":4},"unlisted":false}'),s=i(4848),l=i(4429);i(7478);let t={toc_min_heading_level:2,toc_max_heading_level:4},a="Release notes",o={},d=[{value:"Backlog",id:"backlog",level:2},{value:"Release 1.3.0 - TBD",id:"rel-1.3.0",level:2},{value:"Release 1.2.0 - ETA Q1-2026",id:"rel-1.2.0",level:2},{value:"New Features",id:"rel-1.2.0-new-features",level:3},{value:"<code>filterOnRelations</code>",id:"filteronrelations",level:4},{value:"Improvements",id:"improvements",level:3},{value:"Fixes",id:"fixes",level:3},{value:"New Configurations",id:"rel-1.2.0-new-configs",level:3},{value:"New Relations",id:"rel-1.2.0-new-relations",level:3},{value:"Release 1.1.1 - 12.01.2026",id:"rel-1.1.1",level:2},{value:"Improvements",id:"rel-1.1.1-improvements",level:3},{value:"Memory load when rendering large amounts of referenced entities",id:"memory-load-when-rendering-large-amounts-of-referenced-entities",level:4},{value:"Release 1.1.0 - 26.09.2025",id:"rel-1.1.0",level:2},{value:"New Features",id:"rel-1.1.0-new-features",level:3},{value:"<code>filterOnTags</code> Query Parameter",id:"filterontags-query-parameter",level:4},{value:"<code>filterOnTeams</code> Query Parameter",id:"filteronteams-query-parameter",level:4},{value:"<code>showTags</code> / <code>showTagsInline</code> Query Parameter",id:"showtags--showtagsinline-query-parameter",level:4},{value:"<code>\\{config\\}.preservePrefix</code> Query Parameter",id:"configpreserveprefix-query-parameter",level:4},{value:"excludedViewPrefixes Configuration Option",id:"excludedviewprefixes-configuration-option",level:4},{value:"Log as JSON - Analyse squid usage and performance with Splunk / ELK",id:"log-as-json---analyse-squid-usage-and-performance-with-splunk--elk",level:4},{value:"New Configurations",id:"rel-1.1.0-new-configs",level:3},{value:"New Relations",id:"rel-1.1.0-new-relations",level:3},{value:"Release 1.0.0 - 14.11.2024",id:"rel-1.0.0",level:2}];function c(e){let n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components},{Details:r}=n;return r||function(e,n){throw Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"release-notes",children:"Release notes"})}),"\n",(0,s.jsx)(n.h2,{id:"backlog",children:"Backlog"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Support inferred targetConfigurations for relations"}),"\n",(0,s.jsxs)(n.li,{children:["Support RenderType ",(0,s.jsx)(n.a,{href:"/configs/introduction/renderTypes/relations#relation-literal",children:(0,s.jsx)(n.code,{children:"Relation Literal"})})," for Relations"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"rel-1.3.0",children:"Release 1.3.0 - TBD"}),"\n",(0,s.jsx)(n.p,{children:"Nothing planned yet."}),"\n",(0,s.jsxs)(n.p,{children:["If you are missing anything, please head over to give us a heads-up over\nat ",(0,s.jsx)(n.a,{href:"https://support.arc46.io/c/feature-requests",children:"Feature Requests"}),", and we'll see what we can do."]}),"\n",(0,s.jsx)(n.h2,{id:"rel-1.2.0",children:"Release 1.2.0 - ETA Q1-2026"}),"\n",(0,s.jsx)(n.h3,{id:"rel-1.2.0-new-features",children:"New Features"}),"\n",(0,s.jsx)(n.h4,{id:"filteronrelations",children:(0,s.jsx)(n.code,{children:"filterOnRelations"})}),"\n",(0,s.jsxs)(n.p,{children:["Squid is now able to filter results based on relations as in give me all CIs that have a ",(0,s.jsx)(n.code,{children:"Depends on::Used by"})," to a\n",(0,s.jsx)(n.code,{children:"cmdb_ci_service"})," with Lifecycle Stage ",(0,s.jsx)(n.code,{children:"Operational"})]}),"\n",(0,s.jsx)(n.h3,{id:"improvements",children:"Improvements"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"tbd"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"fixes",children:"Fixes"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Fixed bug where RenderType ",(0,s.jsx)(n.code,{children:"Relation Inline C
1ontent"})," was incorrectly implemented and rendered as ",(0,s.jsx)(n.code,{children:"Inline Content"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"rel-1.2.0-new-configs",children:"New Configurations"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"tbd"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"rel-1.2.0-new-relations",children:"New Relations"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"tbd"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"rel-1.1.1",children:"Release 1.1.1 - 12.01.2026"}),"\n",(0,s.jsx)(n.p,{children:"This is a maintenance release addressing only the issue described below."}),"\n",(0,s.jsx)(n.h3,{id:"rel-1.1.1-improvements",children:"Improvements"}),"\n",(0,s.jsx)(n.h4,{id:"memory-load-when-rendering-large-amounts-of-referenced-entities",children:"Memory load when rendering large amounts of referenced entities"}),"\n",(0,s.jsx)(n.p,{children:"Fixed excessive memory load with large amounts of data (>200.000 entities) combined with multiple large referenced\nentities resulting in 200.000 base entities and 1.000.000 referenced entities."}),"\n",(0,s.jsxs)(r,{children:[(0,s.jsx)("summary",{children:"Expand to see detailed description of the underlying problem"}),(0,s.jsxs)(n.p,{children:["Squid can stream unlimited amounts of data and is only restricted by the system\nproperty ",(0,s.jsx)(n.a,{href:"/usage/api-throughput/servicenow-configuration#max-view-records",children:"glide.db.max_view_records"})," as well as\nthe ",(0,s.jsx)(n.a,{href:"/usage/api-throughput/servicenow-configuration#transaction-quotas",children:"Transaction Quota Rules"}),"\ntimeout settings."]}),(0,s.jsxs)(n.p,{children:["Squid can be configured to render the same referenced entity with different target configurations, e.g. the reference\nfield ",(0,s.jsx)(n.code,{children:"vendor"})," is configured to be rendered with a ",(0,s.jsx)(n.code,{children:"targetConfig"})," of ",(0,s.jsx)(n.code,{children:"core_company_minimal"}),", while the reference field\n",(0,s.jsx)(n.code,{children:"manufacturer"})," is configured to be rendered with a",(0,s.jsx)(n.code,{children:"targetConfig"})," of ",(0,s.jsx)(n.code,{children:"core_company_full"}),". It can and does occur that both\n",(0,s.jsx)(n.code,{children:"vendor"})," and ",(0,s.jsx)(n.code,{children:"manufacturer"})," reference the same company, e.g. Apple. As Squid has conflicting target configurations, it\nretrieves the referenced entity multiple times, once for each ",(0,s.jsx)(n.code,{children:"targetConfig"}),", merges the result and renders the merged\nobject in the JSON section ",(0,s.jsx)(n.code,{children:"references"}),"."]}),(0,s.jsx)("figure",{children:(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Conflicting Reference Target Configurations",src:i(4290).A+"",width:"1081",height:"178"})})}),(0,s.jsx)(n.p,{children:"Pre 1.1.1 Squid would cache referenced entities before merging them, potentially causing memory issues."})]}),"\n",(0,s.jsx)(n.p,{children:"Squid now retrieves referenced entities in a way that causes zero memory load - without increasing the amount of\ndatabase\nrequests required."}),"\n",(0,s.jsxs)(n.p,{children:["Squid now only holds the ",(0,s.jsx)(n.code,{children:"sysIds"})," of referenced entities in memory as well as any entities explicitly configured to be\ncached."]}),"\n",(0,s.jsx)(n.h2,{id:"rel-1.1.0",children:"Release 1.1.0 - 26.09.2025"}),"\n",(0,s.jsx)(n.h3,{id:"rel-1.1.0-new-features",children:"New Features"}),"\n",(0,s.jsxs)(n.h4,{id:"filterontags-query-parameter",children:[(0,s.jsx)(n.code,{children:"filterOnTags"})," Query Parameter"]}),"\n",(0,s.jsxs)(n.p,{children:["Squid is now able to filter results based on tags (",(0,s.jsx)(n.code,{children:"cmdb_key_value"}),") as in give me all CIs with tag\n",(0,s.jsx)(n.code,{children:"aws:servicecatalog:productArn"})," = ",(0,s.jsx)(n.code,{children:"xxx"})]}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"/usage/api-call/filters#filter-on-tags",children:"filterOnTags"})]}),"\n",(0,s.jsxs)(n.h4,{id:"filteronteams-query-parameter",children:[(0,s.jsx)(n.code,{children:"filterOnTeams"})," Query Parameter"]}),"\n",(0,s.jsxs)(n.p,{children:["Squid is now able to filter results based on teams related to a ci as in give me all CIs ",(0,s.jsx)(n.code,{children:"managed_by"})," team ",(0,s.jsx)(n.code,{children:"teamA"})," (\n",(0,s.jsx)(n.code,{children:"cmdb_rel_team"}),")."]}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"/usage/api-call/filters#filter-on-teams",children:"filterOnTeams"})]}),"\n",(0,s.jsxs)(n.h4,{id:"showtags--showtagsinline-query-parameter",children:[(0,s.jsx)(n.code,{children:"showTags"})," / ",(0,s.jsx)(n.code,{children:"showTagsInline"})," Query Parameter"]}),"\n",(0,s.jsxs)(n.p,{children:["Squid is now able to render tags (",(0,s.jsx)(n.code,{children:"cmdb_key_value"}),") as additional properties of entities."]}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"/usage/api-call/flags#flag-show-tags",children:"showTags"})," / ",(0,s.jsx)(n.a,{href:"/usage/api-call/flags#flag-show-tags-inline",children:"showTagsInline"})]}),"\n",(0,s.jsxs)(n.h4,{id:"configpreserveprefix-query-parameter",children:[(0,s.jsx)(n.code,{children:"\\{config\\}.preservePrefix"})," Query Parameter"]}),"\n",(0,s.jsxs)(n.p,{children:["Release 1.0.0 introduced the ",(0,s.jsx)(n.code,{children:"preservePrefix"})," query parameter. This option allows you to preserve the database view\nprefix on all root entities."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"{config}.preservePrefix"})," allows you to preserve the database view prefix for entities rendered as references or\nrelations, i.e., with other configurations the the root configuration."]}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"/usage/api-call/flags#flag-preserve-prefix-for-config",children:"{config}.preservePrefix"})]}),"\n",(0,s.jsx)(n.h4,{id:"excludedviewprefixes-configuration-option",children:"excludedViewPrefixes Configuration Option"}),"\n",(0,s.jsx)(n.p,{children:"Squid now allows specific database view prefixes to be excluded from the returned JSON."}),"\n",(0,s.jsx)(n.h4,{id:"log-as-json---analyse-squid-usage-and-performance-with-splunk--elk",children:"Log as JSON - Analyse squid usage and performance with Splunk / ELK"}),"\n",(0,s.jsx)(n.p,{children:"Some customers are using Splunk, ELK (ElasticSearch, Kibana, Logstash), etc. as central repository for logs and\nstatistics. These tools are generally better suited for detailed analysis than using the standard ServiceNow syslog,\nwhich is known to have performance challenges."}),"\n",(0,s.jsxs)(n.admonition,{title:"syslog is NOT suitable for statistical analysis",type:"warning",children:[(0,s.jsx)(n.p,{children:"This is a known and acknowledged problem. See"}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0996035",children:"Troubleshooting excessive logging (syslog)"}),":\n",(0,s.jsxs)(n.em,{children:["The syslog table in an instance can grow very large\ndue to excessive, and if this happens, you may
1notice issues such as: ... Slow performance or even ",(0,s.jsx)(n.strong,{children:"timeouts"})," when\ntrying to query the System Logs"]})]}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0721331",children:"All the logs in ServiceNow"}),": ",(0,s.jsx)(n.em,{children:"It is not\nrecommended to retain logging for too long as it can grow big quickly. When it is too big, it becomes difficult for\nanalyzing and slow to search."})]})]}),"\n",(0,s.jsx)(n.p,{children:"If this usecase is relevant for you, you can now switch to a JSON log format, making Splunk/ELK ingress easier."}),"\n",(0,s.jsxs)(n.p,{children:["We've built a proprietary LogForwarder that pushes logs from ServiceNow to Splunk/ELK with a maximum latency of 10\nseconds. Depending on customer interest, we might offer this as a\nseparate (free) product. As always, give us a heads-up over\nat ",(0,s.jsx)(n.a,{href:"https://support.arc46.io/c/feature-requests",children:"Feature Requests"}),", and we'll see what we can do."]}),"\n",(0,s.jsx)(n.h3,{id:"rel-1.1.0-new-configs",children:"New Configurations"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"cmdb_ci_ip_address"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"rel-1.1.0-new-relations",children:"New Relations"}),"\n",(0,s.jsx)(n.p,{children:"none."}),"\n",(0,s.jsx)(n.h2,{id:"rel-1.0.0",children:"Release 1.0.0 - 14.11.2024"}),"\n",(0,s.jsx)(n.p,{children:"Initial Release"})]})}function h(e={}){let{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},4290:function(e,n,i){i.d(n,{A:()=>r});let r=i.p+"assets/images/ConflictingReferenceConfigs-20d4bf8d11b0706bf0b68a25c05adef0.png"},4429:function(e,n,i){i.d(n,{R:()=>t,x:()=>a});var r=i(6540);let s={},l=r.createContext(s);function t(e){let n=r.useContext(l);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.