<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 04:34:50 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MAGNOLIA-8679] Avoid duplication of headers </title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-8679</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;When there are multiple requests, headers are duplicated in &lt;tt&gt;info.magnolia.cms.filters.AddHeadersFilter&lt;/tt&gt; because &lt;tt&gt;org.apache.http.HttpMessage.addHeader(String, String)&lt;/tt&gt; is used to add headers. &lt;/p&gt;

&lt;p&gt;Another case is &lt;tt&gt;info.magnolia.enterprise.registration.RegistrationFilter&lt;/tt&gt; that includes &quot;X-Magnolia-Registration&quot;, after that, here, the header is duplicated due to &lt;tt&gt;info.magnolia.module.cache.filter.CacheResponseWrapper.replayHeadersAndStatus(HttpServletResponse target)&lt;/tt&gt;, here &lt;tt&gt;info.magnolia.cms.util.RequestHeaderUtil.setHeader(HttpServletResponse, String, Object)&lt;/tt&gt; where the header is added when it was already added to the request. &lt;/p&gt;

&lt;p&gt;An easy way to reproduce it is installing Sitemesh, after installing this module, after request will have duplicate headers&lt;/p&gt;

&lt;p&gt;Although, the protocol defines:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
Multiple message-header fields with the same field-name MAY be present in a message &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; and only &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; the entire field-value &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; that header field is defined as a comma-separated list [i.e., #(values)]. It MUST be possible to combine the multiple header fields into one &lt;span class=&quot;code-quote&quot;&gt;&quot;field-name: field-value&quot;&lt;/span&gt; pair, without changing the semantics of the message, by appending each subsequent field-value to the first, each separated by a comma. The order in which header fields with the same field-name are received is therefore significant to the interpretation of the combined field value, and thus a proxy MUST NOT change the order of these field values when a message is forwarded.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It may be a good practice to check if a header already exists with the same value. There is a utility class to work with headers that might help: &lt;tt&gt;info.magnolia.cms.util.RequestHeaderUtil&lt;/tt&gt;&lt;/p&gt;


&lt;p&gt;&lt;b&gt;Workaround:&lt;/b&gt;&lt;br/&gt;
Adding a bypass to the filter -&amp;gt; &lt;tt&gt;info.magnolia.voting.voters.ForwardVoter&lt;/tt&gt;&lt;/p&gt;
</description>
                <environment></environment>
        <key id="65152">MAGNOLIA-8679</key>
            <summary>Avoid duplication of headers </summary>
                <type id="1" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10883&amp;avatarType=issuetype">Bug</type>
                                            <priority id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/neutral.gif">Neutral</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="canh.nguyen">Canh Nguyen</assignee>
                                    <reporter username="miruela">Mercedes Iruela</reporter>
                        <labels>
                            <label>maintenance</label>
                    </labels>
                <created>Fri, 23 Mar 2018 11:28:47 +0100</created>
                <updated>Tue, 17 Jan 2023 09:00:35 +0100</updated>
                            <resolved>Tue, 17 Jan 2023 09:00:34 +0100</resolved>
                                    <version>6.2.27</version>
                                    <fixVersion>6.3.0</fixVersion>
                    <fixVersion>6.2.28</fixVersion>
                                        <due></due>
                            <votes>3</votes>
                                    <watches>12</watches>
                                                    <progress percentage="100">
                                    <originalProgress>
                                                    <row percentage="0" backgroundColor="#89afd7"/>
                                                    <row percentage="100" backgroundColor="transparent"/>
                                            </originalProgress>
                                                    <currentProgress>
                                                    <row percentage="100" backgroundColor="#51a825"/>
                                                    <row percentage="0" backgroundColor="#ec8e00"/>
                                            </currentProgress>
                            </progress>
                                    <aggregateprogress percentage="100">
                                    <originalProgress>
                                                    <row percentage="0" backgroundColor="#89afd7"/>
                                                    <row percentage="100" backgroundColor="transparent"/>
                                            </originalProgress>
                                                    <currentProgress>
                                                    <row percentage="100" backgroundColor="#51a825"/>
                                                    <row percentage="0" backgroundColor="#ec8e00"/>
                                            </currentProgress>
                            </aggregateprogress>
                                                    <timespent seconds="75600">2d 5h</timespent>
                                                                    <aggregatetimespent seconds="75600">2d 5h</aggregatetimespent>
                                    <comments>
                            <comment id="332823" author="thien.quach" created="Tue, 29 Nov 2022 12:36:21 +0100"  >&lt;h2&gt;&lt;a name=&quot;Discovery&quot;&gt;&lt;/a&gt;Discovery&lt;/h2&gt;

&lt;p&gt;Stack trace:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
appendHeader:353, CacheResponseWrapper (info.magnolia.module.cache.filter)
addHeader:324, CacheResponseWrapper (info.magnolia.module.cache.filter)
addHeader:132, GZipFilter$GZipCacheResponseWrapper (info.magnolia.module.cache.filter)
addHeader:174, HttpServletResponseWrapper (javax.servlet.http)
addHeader:202, HttpServletResponseBuffer (org.sitemesh.webapp.contentfilter)
addHeader:174, HttpServletResponseWrapper (javax.servlet.http)
doFilter:55, AddHeadersFilter (info.magnolia.cms.filters)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Magnolia is using Cache Core module to cache for the server Response, and so are the headers of response, in &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#77&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;CacheResponseWrapper&lt;/a&gt;. The &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#91&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;headers&lt;/a&gt; is declared as a MultiValueMap (see headers), which accepts a key could hold multiple values,&lt;/p&gt;

&lt;p&gt;When the appendHeader(String, String) is called, hence the headers.put(key, value) will blindly put the key-value to a MultiValueMap no matter the value is already existing, &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#353&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;see&lt;/a&gt;&#160;&lt;/p&gt;

&lt;p&gt;The duplicating value in header is what we are going to avoid.&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Proposesolution%3A&quot;&gt;&lt;/a&gt;Propose solution:&lt;/h2&gt;

&lt;p&gt;Check for duplicating value before &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#353&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;put to the MultiValueMap&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="332831" author="rkovarik" created="Tue, 29 Nov 2022 12:45:12 +0100"  >&lt;blockquote&gt;&lt;p&gt;When the appendHeader(String, String) is called, hence the headers.put(key, value) will blindly put the key-value to a MultiValueMap no matter the value is already existing, see&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The behaviour of the cache wrapper seems to be correct for #addHeader.&lt;/p&gt;

&lt;p&gt;The behaviour you described would be correct for #putHeader.&lt;/p&gt;

&lt;p&gt;I see the possible issues in &lt;em&gt;AddHeadersFilter&lt;/em&gt; which can&apos;t be configured to &lt;em&gt;put&lt;/em&gt; instead of &lt;em&gt;add&lt;/em&gt; headers.&lt;/p&gt;

&lt;p&gt;Also the ticket mentions couple of different filters (addHeaders, registration, sitemesh) which should be split in multiple tickets if needed so the tickets can be estimated accordingly.&lt;/p&gt;

&lt;p&gt;The tickets created from support could describe one scenario at time with clear steps to reproduce e.g. :&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;MGNLEE ticket: curl -I &amp;lt;URL&amp;gt; // you see the XX header is duplicated&lt;/li&gt;
	&lt;li&gt;MAGNOLIA ticket: configure X=Y to &lt;em&gt;AddHeadersFilter&lt;/em&gt; (link to config in an instance), curl -I &amp;lt;URL&amp;gt; // you see the XX header is duplicated&lt;/li&gt;
	&lt;li&gt;SITEMESH ticket: install sitemesh module (link to git/docu/maven), curl -I &amp;lt;URL&amp;gt; // you see the XX header is duplicated&lt;/li&gt;
	&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="332983" author="rkovarik" created="Wed, 30 Nov 2022 08:36:31 +0100"  >&lt;p&gt;For the record:&lt;br/&gt;
&#160;&lt;br/&gt;
thienqh &#160;&lt;a href=&quot;https://magnolia-cms.slack.com/archives/DJMS15D7G/p1669793333497719&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;8:28&lt;/a&gt;&lt;br/&gt;
but when I debug, all the issue endup can be fixed in this line&#160;&lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#353&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/sr[&#8230;]nfo/magnolia/module/cache/filter/CacheResponseWrapper.java&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://magnolia-cms.slack.com/archives/DJMS15D7G/p1669793430387739&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;8:30&lt;/a&gt;&lt;br/&gt;
before we call headers.put(...) we only need to check if the value&apos;s already there in the map, to avoid the duplication&lt;br/&gt;
&#160;&lt;br/&gt;
roman&#160;&#160;&lt;a href=&quot;https://magnolia-cms.slack.com/archives/DJMS15D7G/p1669793519171579&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;8:31 AM&lt;/a&gt;&lt;br/&gt;
ok, I probably get it now. Could you move the ticket to the cache module and change the description with the bug template (steps/behaviour) ?&lt;/p&gt;</comment>
                            <comment id="332985" author="thien.quach" created="Wed, 30 Nov 2022 08:43:40 +0100"  >&lt;h2&gt;&lt;a name=&quot;Discovery%28Editited%29&quot;&gt;&lt;/a&gt;Discovery (Editited)&lt;/h2&gt;

&lt;p&gt;Steps to reproduce:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Go to&#160;&lt;a href=&quot;https://demoauthor.magnolia-cms.com/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://demoauthor.magnolia-cms.com/&lt;/a&gt;&#160;and login.&lt;/li&gt;
	&lt;li&gt;Open Configuration -&amp;gt; server -&amp;gt; filters&lt;/li&gt;
	&lt;li&gt;Add a new filter using&#160;&lt;b&gt;info.magnolia.cms.filters.AddHeadersFilter&lt;/b&gt; class or just import it from the attachment &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/attachment/103705/103705_config.server.filters.addTestHeaders.xml&quot; title=&quot;config.server.filters.addTestHeaders.xml attached to MAGNOLIA-8679&quot;&gt;config.server.filters.addTestHeaders.xml&lt;sup&gt;&lt;img class=&quot;rendericon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/link_attachment_7.gif&quot; height=&quot;7&quot; width=&quot;7&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; file&#160;&lt;em&gt;config.server.filters.addTestHeaders.xml&lt;/em&gt;. (I put it after uriSecurity filter, because it is important in my application, but probably ordering doesn&apos;t matter)&lt;br/&gt;
&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;103706_thumb&quot; href=&quot;https://jira.magnolia-cms.com/secure/attachment/103706/103706_image-2022-11-09-15-50-07-578.png&quot; title=&quot;image-2022-11-09-15-50-07-578.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;103706&quot; file-preview-title=&quot;image-2022-11-09-15-50-07-578.png&quot;&gt;&lt;img src=&quot;https://jira.magnolia-cms.com/secure/thumbnail/103706/_thumb_103706.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;ol&gt;
	&lt;li&gt;Open&#160;&lt;a href=&quot;https://demoauthor.magnolia-cms.com/travel&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://demoauthor.magnolia-cms.com/travel&lt;/a&gt;&#160;in browser (I used Chrome)&lt;/li&gt;
	&lt;li&gt;Open browser dev tools and go to the Network tab&lt;/li&gt;
	&lt;li&gt;Observe that the same headers added multiple times. It causes unpredictable behavior on client side in some cases.&lt;br/&gt;
&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;103707_thumb&quot; href=&quot;https://jira.magnolia-cms.com/secure/attachment/103707/103707_image-2022-11-09-15-55-55-799.png&quot; title=&quot;image-2022-11-09-15-55-55-799.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;103707&quot; file-preview-title=&quot;image-2022-11-09-15-55-55-799.png&quot;&gt;&lt;img src=&quot;https://jira.magnolia-cms.com/secure/thumbnail/103707/_thumb_103707.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;&lt;a name=&quot;Expectedresults&quot;&gt;&lt;/a&gt;Expected results&lt;/h3&gt;

&lt;p&gt;Headers are not duplicated.&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;Actualresults&quot;&gt;&lt;/a&gt;Actual results&lt;/h3&gt;

&lt;p&gt;Headers are duplicated.&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;Stacktracefromdebugging%3A&quot;&gt;&lt;/a&gt;Stack trace from debugging:&lt;/h3&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
appendHeader:353, CacheResponseWrapper (info.magnolia.module.cache.filter)
addHeader:324, CacheResponseWrapper (info.magnolia.module.cache.filter)
addHeader:132, GZipFilter$GZipCacheResponseWrapper (info.magnolia.module.cache.filter)
addHeader:174, HttpServletResponseWrapper (javax.servlet.http)
addHeader:202, HttpServletResponseBuffer (org.sitemesh.webapp.contentfilter)
addHeader:174, HttpServletResponseWrapper (javax.servlet.http)
doFilter:55, AddHeadersFilter (info.magnolia.cms.filters)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Magnolia is using Cache module to cache for the server Response, and so are the headers of response, in &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#77&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;CacheResponseWrapper&lt;/a&gt;. The&#160;&lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#91&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;headers&lt;/a&gt;&#160;is declared as a MultiValueMap (see headers), which accepts a key could hold multiple values,&lt;/p&gt;

&lt;p&gt;When the response.addHeader() is called in the filter, the header will be put via headers.put(key, value) will blindly put the key-value to a MultiValueMap no matter the value is already existing, &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#353&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;see&lt;/a&gt;&#160;&lt;/p&gt;

&lt;p&gt;The duplicating value in header is what we are going to avoid.&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;Proposesolution%3A&quot;&gt;&lt;/a&gt;Propose solution:&lt;/h2&gt;

&lt;p&gt;Check for duplicating value before&#160;&lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#353&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;put to the MultiValueMap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This ticket should belong to MGNLCACHE&lt;/p&gt;</comment>
                            <comment id="334358" author="jsimak" created="Mon, 12 Dec 2022 10:17:46 +0100"  >&lt;p&gt;To Discover:&lt;br/&gt;
Can we get info abou request that it&apos;s forwarded? What to do then? Rewrite Headers? Skip writing header values?&lt;/p&gt;</comment>
                            <comment id="334553" author="canh.nguyen" created="Tue, 13 Dec 2022 10:41:45 +0100"  >&lt;p&gt;We can know if a request is forwarded by checking &lt;b&gt;request.getDispatcherType().name()&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/40133177/how-to-determine-request-is-forwarded-or-not-in-java-filters&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://stackoverflow.com/questions/40133177/how-to-determine-request-is-forwarded-or-not-in-java-filters&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;A forwarded request could not be filtered by the current filter because it could be forwarded before reaching the current filter. Override the header could be the right way to do.&lt;/p&gt;</comment>
                            <comment id="334556" author="rkovarik" created="Tue, 13 Dec 2022 10:54:55 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=thien.quach&quot; class=&quot;user-hover&quot; rel=&quot;thien.quach&quot;&gt;thien.quach&lt;/a&gt; Don&apos;t you think the latest comments side tract from the actual problem?&lt;/p&gt;

&lt;p&gt;Do I get it right that the problem is:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;addHeader(a, a)&lt;/li&gt;
	&lt;li&gt;addHeader(a, a)&lt;br/&gt;
=&amp;gt; results in a: &lt;span class=&quot;error&quot;&gt;&amp;#91;a, a&amp;#93;&lt;/span&gt;&lt;br/&gt;
but should be still a: a since the same value is already set.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;But of course &lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;addHeader(a, a)&lt;/li&gt;
	&lt;li&gt;addHeader(a, b)&lt;br/&gt;
=&amp;gt; results in a: &lt;span class=&quot;error&quot;&gt;&amp;#91;a, b&amp;#93;&lt;/span&gt;&lt;br/&gt;
(this should work already)&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="334661" author="canh.nguyen" created="Wed, 14 Dec 2022 02:32:34 +0100"  >&lt;p&gt;Headers can have multiple pairs with same key name but different values. AddHeadersFilter should always add new headers, so we could make a new class like SetHeadersFilter if users need to set a single header instead of adding multiple values. We could also make a MergeHeadersFilter to merge some configured headers.&lt;/p&gt;

&lt;p&gt;If the headers have unwanted duplicated values, then it would be config errors, not the code.&lt;/p&gt;

&lt;p&gt;AddHeadersFilter should check if a request is forwarded and if the request is already added headers, to do proper actions for the request.&lt;/p&gt;</comment>
                            <comment id="334664" author="thien.quach" created="Wed, 14 Dec 2022 05:03:33 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=jsimak&quot; class=&quot;user-hover&quot; rel=&quot;jsimak&quot;&gt;jsimak&lt;/a&gt;&#160;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Can we get info abou request that it&apos;s forwarded? What to do then? Rewrite Headers? Skip writing header values?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We could check the value if it&apos;s already there in the map before &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#353&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;put to the MultiValueMap&lt;/a&gt; , not so clever but it could help:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!((MultiValueMap&amp;lt;&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;&amp;gt;) headers).containsValue(key, value)) {
    headers.put(key, value);
} &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=rkovarik&quot; class=&quot;user-hover&quot; rel=&quot;rkovarik&quot;&gt;rkovarik&lt;/a&gt;&#160;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Do I get it right that the problem is:addHeader(a, a)addHeader(a, a)&lt;br/&gt;
=&amp;gt; results in a:&#160;&lt;span class=&quot;error&quot;&gt;&amp;#91;a, a&amp;#93;&lt;/span&gt;&lt;br/&gt;
but should be still a: a since the same value is already set.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The multivaluemap accepts duplicating in value, hence a: &lt;span class=&quot;error&quot;&gt;&amp;#91;a, a&amp;#93;&lt;/span&gt; would be considered as 2 differences.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt;&#160;&lt;/p&gt;

&lt;p&gt;yes, the AddHeaderFilter allows to add value to the same header, and as you said the&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Headers can have multiple pairs with same key name but different values.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;But introduce a new filter would not fixed the issue of current filter.&lt;/p&gt;

&lt;p&gt;re: SetHeadersFilter - as I understand you want to use setHeader instead of addHeader, this may override the current header with new values, but there would also an usecase where user may want to add new value to existing header.&lt;/p&gt;

&lt;p&gt;re: MergeHeadersFilter - as I understand you want to merge the existing header&apos;s values with the new one, you may need to check for duplication before merging&lt;/p&gt;</comment>
                            <comment id="334665" author="canh.nguyen" created="Wed, 14 Dec 2022 05:16:45 +0100"  >&lt;p&gt;I&apos;ve just had a quick check followed by the steps to reproduce with below code:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.magnolia-cms.com/secure/attachment/104133/104133_screenshot-1.png&quot; height=&quot;413&quot; width=&quot;965&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://jira.magnolia-cms.com/secure/attachment/104134/104134_screenshot-2.png&quot; height=&quot;581&quot; width=&quot;964&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;We can see that TEST headers are not duplicated. (X-Magnolia-Registration: Registered-demo is not added by AddHeadersFilter is still duplicated)&lt;/p&gt;</comment>
                            <comment id="334666" author="thien.quach" created="Wed, 14 Dec 2022 05:32:57 +0100"  >&lt;p&gt;&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt; in the case of checking duplication for every filter, checking the cache would be more efficiently&#160;&lt;/p&gt;</comment>
                            <comment id="334667" author="canh.nguyen" created="Wed, 14 Dec 2022 05:50:20 +0100"  >&lt;p&gt;I think there is still more a config problem. Why the request is forwarded after a series of filters that modified the response? IMO the forward event should happen before any changes (except sometime changes could be required for some filters to work and forward the request).&lt;/p&gt;

&lt;p&gt;I believe that with the correct filter chain, this issue should not be happened.&lt;/p&gt;</comment>
                            <comment id="334795" author="rkovarik" created="Wed, 14 Dec 2022 15:51:26 +0100"  >&lt;p&gt;Could you try to disable the cache filter to see if there is no wrong behavior of the cache&#160; as &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=thien.quach&quot; class=&quot;user-hover&quot; rel=&quot;thien.quach&quot;&gt;thien.quach&lt;/a&gt; suggested?&lt;/p&gt;

&lt;p&gt;You can extend ~&lt;em&gt;OncePerRequestFilter&lt;/em&gt; or what&apos;s the name so the request is executed only once per request. That filter is already implementing your custom check &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=canh.nguyen&quot; class=&quot;user-hover&quot; rel=&quot;canh.nguyen&quot;&gt;canh.nguyen&lt;/a&gt; .&lt;/p&gt;</comment>
                            <comment id="335733" author="chuong.doan" created="Thu, 22 Dec 2022 12:14:36 +0100"  >&lt;p&gt;My findings :&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Disabling the cache filter (set enabled flag to false) does not affect the duplicated problems. Maybe the cache filter is currently not considering that flag ??? (seem like it still running even with that flag)&lt;/li&gt;
	&lt;li&gt;But disabling the sitemesh filter (set enabled flag to false) completely resolve the problems (both duplicated created by AddHeadersFilter and RegistrationFilter gone). This can be explained that sitemesh trigger some decoration/replay for all the filters (including AddHeadersFilter and RegistrationFilter) which doesn&apos;t do check for header duplication before adding causing duplication.&lt;/li&gt;
	&lt;li&gt;But eventually, the CacheResponseWrapper wrapped the request and replay headers again. So here we can apply  universal duplication check as Thien mentioned, but not at &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#353&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;this line &lt;/a&gt; (check at this line only works for AddHeaderFilter, &quot;X-Magnolia-Registration&quot; is still duplicated.&lt;/li&gt;
	&lt;li&gt;I think it&apos;s better to check at &lt;a href=&quot;https://git.magnolia-cms.com/projects/MODULES/repos/cache/browse/magnolia-cache-core/src/main/java/info/magnolia/module/cache/filter/CacheResponseWrapper.java#426&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;this line&lt;/a&gt; instead, this is where all the traffic go through (tested and eliminated all duplications).&lt;/li&gt;
	&lt;li&gt;That line reference to &lt;a href=&quot;https://git.magnolia-cms.com/projects/PLATFORM/repos/main/browse/magnolia-core/src/main/java/info/magnolia/cms/util/RequestHeaderUtil.java#73&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;this method&lt;/a&gt;, so the check will be inside that method.&lt;br/&gt;
&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=rkovarik&quot; class=&quot;user-hover&quot; rel=&quot;rkovarik&quot;&gt;rkovarik&lt;/a&gt; and &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=thien.quach&quot; class=&quot;user-hover&quot; rel=&quot;thien.quach&quot;&gt;thien.quach&lt;/a&gt; if you are ok with this, i will proceed to implement and will add you as reviewers as well ?&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="335744" author="rkovarik" created="Thu, 22 Dec 2022 12:57:06 +0100"  >&lt;blockquote&gt;&lt;p&gt;Disabling the cache filter (set enabled flag to false) does not affect the duplicated problems. Maybe the cache filter is currently not considering that flag ??? (seem like it still running even with that flag)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The &lt;em&gt;enabled&lt;/em&gt; mechanism is implemented at filter chain level, so should work for any filter. Any chance you modified a different (author vs. public instance)?&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;But disabling the sitemesh filter (set enabled flag to false) completely resolve the problems (both duplicated created by AddHeadersFilter and RegistrationFilter gone). This can be explained that sitemesh trigger some decoration/replay for all the filters (including AddHeadersFilter and RegistrationFilter) which doesn&apos;t do check for header duplication before adding causing duplication.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Exactly, simemesh forwards the request to render the personalized component on the homepage.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;But eventually, the CacheResponseWrapper wrapped the request and replay headers again. So here we can apply universal duplication check if you are ok with this...&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Perfect summary, works for me &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/thumbs_up.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="336938" author="canh.nguyen" created="Thu, 5 Jan 2023 06:32:51 +0100"  >&lt;p&gt;IMO the suggestion to fix the issue in this ticket does not solve the issue completely (fixing in the cache module). Because if we remove the cache module then the issue still exists, or AddHeaderFilter is added after the cache filter. WDYT if we fix this issue in all filters that add headers to the request response? Checking if the request is forwarded or the headers need to be added are already exist?&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10030">
                    <name>Cloners</name>
                                                                <inwardlinks description="is cloned by">
                                        <issuelink>
            <issuekey id="125012">MGNLEE-743</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10040">
                    <name>causality</name>
                                                                <inwardlinks description="is causing">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10020">
                    <name>dependency</name>
                                                                <inwardlinks description="is depended upon by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="103705" name="config.server.filters.addTestHeaders.xml" size="897" author="thien.quach" created="Wed, 30 Nov 2022 08:37:08 +0100"/>
                            <attachment id="103706" name="image-2022-11-09-15-50-07-578.png" size="44047" author="thien.quach" created="Wed, 30 Nov 2022 08:48:42 +0100"/>
                            <attachment id="103707" name="image-2022-11-09-15-55-55-799.png" size="140333" author="thien.quach" created="Wed, 30 Nov 2022 08:48:42 +0100"/>
                            <attachment id="104133" name="screenshot-1.png" size="265477" author="canh.nguyen" created="Wed, 14 Dec 2022 05:09:57 +0100"/>
                            <attachment id="104134" name="screenshot-2.png" size="1668872" author="canh.nguyen" created="Wed, 14 Dec 2022 05:10:25 +0100"/>
                    </attachments>
                <subtasks>
                            <subtask id="124848">MAGNOLIA-8680</subtask>
                            <subtask id="124849">MAGNOLIA-8681</subtask>
                            <subtask id="124850">MAGNOLIA-8682</subtask>
                            <subtask id="124851">MAGNOLIA-8683</subtask>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_14169" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Bug DoR</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                        
        <div style="margin-bottom: 8px;">
                            <div class="o-completion" style="display: flex; flex-shrink: 0;"><span title="All items are completed" class="aui-lozenge aui-lozenge-success" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" fill="white" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.44414 2.77002H2.54536C1.45943 2.77002 0.579102 3.65034 0.579102 4.73628V12.6013C0.579102 13.6873 1.45943 14.5676 2.54536 14.5676H10.4104C11.4963 14.5676 12.3767 13.6873 12.3767 12.6013V6.70259H11.7212V12.6013C11.7212 13.3253 11.1344 13.9122 10.4104 13.9122H2.54536C1.8214 13.9122 1.23452 13.3253 1.23452 12.6013V4.73628C1.23452 4.01232 1.8214 3.42544 2.54536 3.42544H8.44414V2.77002Z" /><path d="M5.09049 10.1853L3.26282 8.3576L2.47803 9.14239L5.09049 11.7549L10.478 6.36731L9.69323 5.58252L5.09049 10.1853Z" /><path d="M14.4013 4.06384L12.9712 3.18904L14.4013 2.31423C14.4259 2.29915 14.4435 2.27493 14.4503 2.24685C14.457 2.21876 14.4523 2.18915 14.4373 2.16455L14.0171 1.47762C13.9858 1.42635 13.9187 1.41019 13.8674 1.44154L12.5022 2.27667V0.676237C12.5022 0.61615 12.4535 0.567383 12.3934 0.567383H11.5883C11.5282 0.567383 11.4794 0.61615 11.4794 0.676237V2.27667L10.1142 1.44159C10.0628 1.41024 9.99587 1.42635 9.96452 1.47768L9.54429 2.16461C9.52927 2.18921 9.52459 2.21881 9.53134 2.2469C9.53809 2.27498 9.55572 2.2992 9.58032 2.31428L11.0105 3.18904L9.58032 4.06384C9.55572 4.07887 9.53809 4.10314 9.53134 4.13117C9.52459 4.15931 9.52927 4.18892 9.54429 4.21352L9.96452 4.90039C9.99587 4.95166 10.0628 4.96788 10.1142 4.93653L11.4794 4.1014V5.70183C11.4794 5.76192 11.5282 5.81069 11.5883 5.81069H12.3934C12.4535 5.81069 12.5022 5.76192 12.5022 5.70183V4.10145L13.8674 4.93648C13.9187 4.96783 13.9858 4.95166 14.0171 4.90045L14.4374 4.21352C14.4524 4.18892 14.4571 4.15931 14.4503 4.13123C14.4436 4.10309 14.4259 4.07892 14.4013 4.06384Z" /></svg></span><span>2/2</span></span></div>
                    
            <div class="checklist-progress-bar-wrapper" style="">
        <div class="checklist-progress-bar" style="position: relative; width: 100%; background-color: #cccccc; margin-bottom: 2px; margin-top: 5px;">
                        <div class="checklist-progress" style="display: block; float: none; width: 100%; height: 2px; background: #14892c;">
                            </div>
        </div>
    </div>
        </div>
    
                                    <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Steps to reproduce, expected, and actual results filled</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Affected version filled</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                            ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 13 Feb 2019 15:51:42 +0100</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10246" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>DEV-919</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>jsimak</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 5 weeks, 3 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>16.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>canh.nguyen</customfieldvalue>
            <customfieldvalue>chuong.doan</customfieldvalue>
            <customfieldvalue>jsimak</customfieldvalue>
            <customfieldvalue>miruela</customfieldvalue>
            <customfieldvalue>thien.quach</customfieldvalue>
            <customfieldvalue>rkovarik</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzztx1:1yccw1a100i00901ii5i</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10245" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1745">DevX 28</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10242" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14168" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Task DoD</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                        
        <div style="margin-bottom: 8px;">
                            <div class="o-completion" style="display: flex; flex-shrink: 0;"><span title="Mandatory items are completed" class="aui-lozenge aui-lozenge-moved" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" fill="black" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.44414 2.77002H2.54536C1.45943 2.77002 0.579102 3.65034 0.579102 4.73628V12.6013C0.579102 13.6873 1.45943 14.5676 2.54536 14.5676H10.4104C11.4963 14.5676 12.3767 13.6873 12.3767 12.6013V6.70259H11.7212V12.6013C11.7212 13.3253 11.1344 13.9122 10.4104 13.9122H2.54536C1.8214 13.9122 1.23452 13.3253 1.23452 12.6013V4.73628C1.23452 4.01232 1.8214 3.42544 2.54536 3.42544H8.44414V2.77002Z" /><path d="M5.09049 10.1853L3.26282 8.3576L2.47803 9.14239L5.09049 11.7549L10.478 6.36731L9.69323 5.58252L5.09049 10.1853Z" /><path d="M14.4013 4.06384L12.9712 3.18904L14.4013 2.31423C14.4259 2.29915 14.4435 2.27493 14.4503 2.24685C14.457 2.21876 14.4523 2.18915 14.4373 2.16455L14.0171 1.47762C13.9858 1.42635 13.9187 1.41019 13.8674 1.44154L12.5022 2.27667V0.676237C12.5022 0.61615 12.4535 0.567383 12.3934 0.567383H11.5883C11.5282 0.567383 11.4794 0.61615 11.4794 0.676237V2.27667L10.1142 1.44159C10.0628 1.41024 9.99587 1.42635 9.96452 1.47768L9.54429 2.16461C9.52927 2.18921 9.52459 2.21881 9.53134 2.2469C9.53809 2.27498 9.55572 2.2992 9.58032 2.31428L11.0105 3.18904L9.58032 4.06384C9.55572 4.07887 9.53809 4.10314 9.53134 4.13117C9.52459 4.15931 9.52927 4.18892 9.54429 4.21352L9.96452 4.90039C9.99587 4.95166 10.0628 4.96788 10.1142 4.93653L11.4794 4.1014V5.70183C11.4794 5.76192 11.5282 5.81069 11.5883 5.81069H12.3934C12.4535 5.81069 12.5022 5.76192 12.5022 5.70183V4.10145L13.8674 4.93648C13.9187 4.96783 13.9858 4.95166 14.0171 4.90045L14.4374 4.21352C14.4524 4.18892 14.4571 4.15931 14.4503 4.13123C14.4436 4.10309 14.4259 4.07892 14.4013 4.06384Z" /></svg></span><span>5/6</span></span></div>
                    
            <div class="checklist-progress-bar-wrapper" style="">
        <div class="checklist-progress-bar" style="position: relative; width: 100%; background-color: #cccccc; margin-bottom: 2px; margin-top: 5px;">
                        <div class="checklist-progress" style="display: block; float: none; width: 83%; height: 2px; background: #14892c;">
                            </div>
        </div>
    </div>
        </div>
    
                                    <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Doc/release notes changes? Comment present?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Downstream builds green?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span>Solution information and context easily available?</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span><strong>Tests</strong></span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="checked"><path d="m21.530642,5.91574l-2.18201,-1.33473l2.18193,-1.33473c0.03753,-0.023 0.06444,-0.05996 0.07473,-0.10281c0.0103,-0.04285 0.00316,-0.08802 -0.01976,-0.12555l-0.64117,-1.04808c-0.04774,-0.07822 -0.15013,-0.10288 -0.22836,-0.05505l-2.08286,1.27419l0,-2.44184c0,-0.09168 -0.0744,-0.16609 -0.16608,-0.16609l-1.22844,0c-0.09168,0 -0.16608,0.07441 -0.16608,0.16609l0,2.44184l-2.08294,-1.27411c-0.07839,-0.04783 -0.18053,-0.02325 -0.22836,0.05506l-0.64117,1.04807c-0.02292,0.03753 -0.03006,0.08271 -0.01976,0.12556c0.01029,0.04285 0.0372,0.0798 0.07473,0.1028l2.18201,1.33465l-2.18201,1.33473c-0.03753,0.02292 -0.06444,0.05996 -0.07473,0.10273c-0.0103,0.04293 -0.00316,0.0881 0.01976,0.12564l0.64117,1.04799c0.04783,0.07822 0.14997,0.10297 0.22836,0.05514l2.08294,-1.2742l0,2.44185c0,0.09167 0.0744,0.16608 0.16608,0.16608l1.22844,0c0.09168,0 0.16608,-0.07441 0.16608,-0.16608l0,-2.44177l2.08294,1.27403c0.07823,0.04783 0.18062,0.02317 0.22837,-0.05497l0.64116,-1.04807c0.02292,-0.03754 0.03006,-0.08271 0.01977,-0.12556c-0.01022,-0.04293 -0.03721,-0.0798 -0.07474,-0.10281z" fill="#778899" /><path clip-rule="evenodd" d="m12.4779,3.94141l-9.03649,0c-1.65686,0 -3,1.34315 -3,3.00001l0,12c0,1.6568 1.34314,3 3,3l11.99999,0c1.6569,0 3,-1.3432 3,-3l0,-9.01487c-0.1928,0.02079 -0.3886,0.03146 -0.5869,0.03146c-0.9504,0 -1.8435,-0.24504 -2.6197,-0.6754l0.2066,0.20658l-8.0813,8.08133l-3.91869,-3.9187l1.17718,-1.1772l2.74151,2.7415l6.7567,-6.75675c-1.0305,-0.98505 -1.6725,-2.37332 -1.6725,-3.91151c0,-0.20501 0.0114,-0.40736 0.0336,-0.60645z" fill="#778899" fill-rule="evenodd" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span style="text-decoration: line-through;">
                                                        <span><strong>FixVersion</strong> filled and not yet released</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                                <div style="display: flex; align-items: flex-start; padding: 0; margin-left: 12px; float: none; font-size: 14px;">
                                                                <span style="padding-right: 5px; align-self: flex-start;">
                                <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" class="unchecked"><rect fill="#EFF4FB" height="17.5" rx="2.5" stroke="#ADBBD0" width="18" x="0.44141" y="3.94141"/></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <span>Architecture Decision Record (<strong>ADR</strong>)</span>

                        </span>
                    </div>
                                                                    <span style="padding-right: 1px; white-space: nowrap;">
                                                        
                                                        
                                                                                </span>
                                    </div>
                                            ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12430" key="com.atlassian.teams:rm-teams-custom-field-team">
                        <customfieldname>Team</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[26]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            

    <customfieldvalue>PD Sub-Task Automation</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>434</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_14630" key="com.atlassian.jira.plugin.system.customfieldtypes:datetime">
                        <customfieldname>Work Started</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 5 Jan 2023 04:48:39 +0100</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>