<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 04:29:16 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-8059] LightModule resources distribution: Define a convenient best practice</title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-8059</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;Using light module development approach for front end leaves a couple of questions open in regards of: How to use it and distribute changes on life systems.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;A main problems I see is:&lt;/b&gt;&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;how to guarantie that the newest changes in light modules are distributed 100% equally trough all instances?&lt;/li&gt;
	&lt;li&gt;how can a customer know which node has wich state of resources loaded? (How can I be sure public2 has the same resources as public1 or public3).&lt;/li&gt;
	&lt;li&gt;When setting magnolia.develop=false changes in the light modules (file system) are detected, BUT the JS &amp;amp; CSS is still served cached. And we have no mechanism to flush the caceh on public instances (except activating something).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;My suggestion:&lt;/b&gt;&lt;br/&gt;
We could define a simple best practice approach:&lt;br/&gt;
They are observed &amp;amp; loaded &amp;amp; managed on the author, and distributed to publics as (JCR) CMS content via the publication mechanism.&lt;br/&gt;
Meaning that on the life public instances the resources are not loaded form a light module in the file system, but from a distribution over JCR.&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;the author loads the light modules from the file system&lt;/li&gt;
	&lt;li&gt;It provides a possibility to create a &quot;live&quot; set of it -&amp;gt; copy them into JCR repo.&lt;br/&gt;
  This is in oposite to a &quot;hot fix&quot;, its a recursive creation of the whole light module. Of all in it, not just one file.&lt;br/&gt;
  Either all or none, not split-able (except by hot-fixing one singly).&lt;/li&gt;
	&lt;li&gt;This &quot;live&quot; set would be published.&lt;/li&gt;
	&lt;li&gt;A version of the whole tree would be created.&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;b&gt;What it solves / advantages:&lt;/b&gt;&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;All the main mechanisms we already have: Hot fixing for JCR copies. The loading cascading (classpath/filesyste/jcr), Publishing with transactional activation.&lt;br/&gt;
  So not that much would have to be developed.&lt;/li&gt;
	&lt;li&gt;On public its all within the CMS -&amp;gt; clone one public, you have it.&lt;br/&gt;
  No need to think about the file system &amp;amp; resources in scope of public instances.&lt;/li&gt;
	&lt;li&gt;Transactional activation ensures that its in sync on all publics.&lt;/li&gt;
	&lt;li&gt;JCR versioning would provide:
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;Clear knowledge of what was when active&lt;/li&gt;
		&lt;li&gt;Possibility to roll back&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;As its activation of content, Cache will automatically flush -&amp;gt; JS &amp;amp; CSS are re cached.&lt;/li&gt;
	&lt;li&gt;Also simplifies for OnDemand, plugging in more Public nodes on the fly.&lt;/li&gt;
	&lt;li&gt;It is not contradicting of using on life a file system approach., just remove the activation possibility on the author.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I see the chance of defining a convenient approach which can be easily be understood and sold.&lt;br/&gt;
A proper &amp;amp; clear &quot;best practice&quot;, rather than that every customer needs to find a way to use it, even all they want is using it a simple/standard way..&lt;br/&gt;
And it is not restrictive to anybody, you can still use any file system based approach in combination with Git etc if needed.&lt;/p&gt;</description>
                <environment>&lt;br/&gt;
&lt;br/&gt;
</environment>
        <key id="49947">MAGNOLIA-8059</key>
            <summary>LightModule resources distribution: Define a convenient best practice</summary>
                <type id="14" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10895&amp;avatarType=issuetype">Story</type>
                                            <priority id="3" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="10433" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/generic.png" description="This issue has been evaluated by development and accepted to be planned in.">Accepted</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="czimmermann">Christopher Zimmermann</assignee>
                                    <reporter username="cringele">Christian Ringele</reporter>
                        <labels>
                            <label>collector-0cf1239d</label>
                            <label>discuss-in-pm</label>
                            <label>light-development</label>
                    </labels>
                <created>Mon, 25 Jan 2016 14:31:32 +0100</created>
                <updated>Thu, 15 Apr 2021 14:58:50 +0200</updated>
                                                                                <due></due>
                            <votes>3</votes>
                                    <watches>10</watches>
                                                                                                                <comments>
                            <comment id="120284" author="czimmermann" created="Thu, 4 Feb 2016 16:59:40 +0100"  >&lt;p&gt;I like this suggestion. We&apos;ve been very focussed on the developer experience, and have made massive improvements. But currently teams are rather on their own when it comes to pushing their changes to the public instances. I&apos;d like them to have the freedom to use a git deployment approach - but I think this suggestion is a good default for people who &quot;want magnolia to do the work for them&quot;. Also the set that gets pushed could actually be a combination of the active mix of resources on the author - including classpath/file/jcr hotfix.&lt;/p&gt;

&lt;p&gt;This problem was also brought up by a client (&lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=runger&quot; class=&quot;user-hover&quot; rel=&quot;runger&quot;&gt;runger&lt;/a&gt;):&lt;br/&gt;
&quot;To be quite clear: the way magnolia stores templates and resources in JCR, and permits publishing them from author to web nodes was one of the big reasons we chose magnolia in the first place, and we don&apos;t want this stuff on the file-system or (shudder!!) on the classpath.&quot; (&lt;a href=&quot;https://wiki.magnolia-cms.com/display/~runger/Feedback+for+Version+5.4.3?focusedCommentId=114066342#comment-114066342&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://wiki.magnolia-cms.com/display/~runger/Feedback+for+Version+5.4.3?focusedCommentId=114066342#comment-114066342&lt;/a&gt;)&lt;/p&gt;</comment>
                            <comment id="120288" author="bwarrick" created="Thu, 4 Feb 2016 17:08:13 +0100"  >&lt;p&gt;I believe it was &lt;a href=&quot;https://jira.magnolia-cms.com/secure/ViewProfile.jspa?name=nbarbe&quot; class=&quot;user-hover&quot; rel=&quot;nbarbe&quot;&gt;nbarbe&lt;/a&gt; who helped Atlassian build a git connector to pull in resources (primarily css for them, I think).  The question of deploying updates for templates and css comes up with many US customers.  Ultimately, they like the flexibility to hotfix items, but they recognize that allowing production updates that do not go through some form of testing and source code management is risky.  &lt;/p&gt;</comment>
                            <comment id="120291" author="nbarbe" created="Thu, 4 Feb 2016 17:16:32 +0100"  >&lt;p&gt;The approach described here has the advantage to be fully independent of the infrastructure and architecture since it is managed 100% by Magnolia. The location of the public and author instance, the way it is deployed and operated does not matter. It clearly reduces the operation cost.&lt;/p&gt;

&lt;p&gt;I personally prefer letting the infrastructure managing the distribution of the lightmodule resources. It is true that it will require additional work for the customer to setup this distribution. But I see more advantage in keeping things simple: Git + ssh already solved this problem quite easily and in a secured and standard way. It also enables a lot of possible scenarios like having an instance on a specific development branch only. A simple &quot;git checkout&quot; is enough, which is fully integrated in all devops tools, and this is the beauty! &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/biggrin.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;

&lt;p&gt;So I&apos;m not saying that my idea is better, actually both are totally valid and fulfill needs of different users.&lt;/p&gt;</comment>
                            <comment id="120641" author="cringele" created="Wed, 10 Feb 2016 16:10:07 +0100"  >&lt;p&gt;Regarding the company&apos;s using the &quot;pure&quot; FS &amp;amp; git way:&lt;/p&gt;

&lt;p&gt;If I think about it in production mode, there comes one big question most directly ask first place:&lt;br/&gt;
If using git pulls etc. how cna be guaranteed that on all public instances the absolute same resources are used?&lt;/p&gt;

&lt;p&gt;Meaning:&lt;br/&gt;
The git and FS approach is nice, but its completely decoupled from Magnolia.&lt;br/&gt;
Lets assume, on one of the three public instances the git pull doesn&apos;t work. The script doing the pull detects it, and now what?&lt;br/&gt;
How to react to it? How telling Magnolia that it should not use it, or even go offline until a successful pull?&lt;br/&gt;
Clear it is all manageable by informing a LB and tell him not to use node 2.&lt;br/&gt;
But its hard to teach Magnolia that one public node is actually not in a clear and usefull state.&lt;/p&gt;

&lt;p&gt;Where the activation has one big advantage:&lt;br/&gt;
Either it works on all or on none -&amp;gt; you just know what the state of the resources is on all public nodes.&lt;/p&gt;

&lt;p&gt;I&apos;m not saying, that the FS approach should not be allowed.&lt;br/&gt;
As Topher says, its not contradicting. But companies using the FS &amp;amp; git approach will really know what they do and customize quite a lot to be able to react to it.&lt;/p&gt;</comment>
                            <comment id="136238" author="cringele" created="Wed, 14 Dec 2016 09:34:32 +0100"  >&lt;blockquote&gt;
&lt;p&gt;But I see more advantage in keeping things simple: Git + ssh already solved this problem quite easily and in a secured and standard way. It also enables a lot of possible scenarios like having an instance on a specific development branch only. A simple &quot;git checkout&quot; is enough, which is fully integrated in all devops tools, and this is the beauty!&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;A last coment here form my side, cause I think my suggestion is not fully understood:&lt;br/&gt;
The discussion goes into direction of &quot;Git &amp;amp; pull vs. Distribution over JCR&quot; which is &lt;b&gt;WRONG&lt;/b&gt;!&lt;/p&gt;

&lt;p&gt;I talk about &lt;b&gt;HOW&lt;/b&gt; the resources get from the author to the public.&lt;br/&gt;
This does &lt;b&gt;NOT&lt;/b&gt; contradict the &quot;git &amp;amp; pull&quot; !&lt;br/&gt;
&lt;b&gt;On the author&lt;/b&gt;, all changes in FS &lt;b&gt;would be fetched by the &quot;git &amp;amp; pull&quot;&lt;/b&gt;, because its just a neat and nice way to do it, no opposition here.&lt;br/&gt;
But &lt;b&gt;after the pull/after the update&lt;/b&gt; of the FS files, the distribution of them to the publics via JCR Activation.&lt;br/&gt;
Its NOT contradicting, its is collaborating and using the &lt;b&gt;best of both worlds&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;What is the gain that all instances have to pull at the same time? I don&apos;t see any.&lt;br/&gt;
Why not just on the author? And the distributing them either manually, or automatically? whatever fits the customer best. Both could be provided OTB.&lt;br/&gt;
And for example when sending them to the publics via Activation, the git commit ID could be used to refer which exact version is not sent to the live system, and more could be thought of and added...&lt;/p&gt;</comment>
                            <comment id="151194" author="runger" created="Thu, 9 Nov 2017 13:29:56 +0100"  >&lt;p&gt;+1 from me (us at LFRZ)&lt;/p&gt;

&lt;p&gt;We can&apos;t easily deploy via GIT due to security policies, and we don&apos;t like the fact that we can&apos;t activate the resources.&lt;/p&gt;

&lt;p&gt;We currently solve this by using webdav to copy our light modules into JCR resources storage on the author systems, and activate them from there. We would love to see a more unified approach as described above.&lt;/p&gt;</comment>
                            <comment id="151233" author="viet.nguyen" created="Fri, 10 Nov 2017 07:31:16 +0100"  >&lt;p&gt;Ok also from SUPPORT-8104:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Currently, info.magnolia.module.model.reader.LightModuleDefinitionReader goes directly against the filesystem. This means it does not &quot;find&quot; light modules which are stored in the JCR resources workspace. In contrast, the other areas of light development (template registry, dialogs, themes, etc...) have no problem finding the definitions regardless of storage location because they operate on the Resources abstraction.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;Please fix LightModuleDefinitionReader to use the Resources Abstraction to locate modules rather than going directly to the file system. This will enable JCR-stored Light Modules, and also enable &quot;JCR patching&quot; for the module descriptors, even when they are present on the filesystem.&lt;/p&gt;&lt;/blockquote&gt;</comment>
                            <comment id="182992" author="vivi" created="Fri, 22 Mar 2019 15:21:14 +0100"  >&lt;p&gt;&lt;b&gt;Approach 1&lt;/b&gt;: JCR Publishing: +1 but with solution for * (see below)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Approach 2&lt;/b&gt;: for SSH/Git: -1 reasons &lt;br/&gt;
 a) versioned packages/bundles (NPM, JAR, ..) should be deployed, not &quot;sources&quot; (IMO) &lt;br/&gt;
 b) we avoid external tool dependencies where we can; it complicates the infrastructure (even though it&apos;s &quot;just one more package to install&quot;) *&#160;&lt;/p&gt;

&lt;p&gt;Other approaches:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Approach 3&lt;/b&gt;: Resources dir in NFS *: +/-0&lt;br/&gt;
 author &amp;amp; public share the same resources dir which is stored in an NFS; &lt;br/&gt;
 &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/forbidden.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&#160;no staging: install on author = install on public &lt;br/&gt;
 &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/add.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&#160;very simple &amp;amp; works&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Approach 4&lt;/b&gt;: Command to download bundle/package from somewhere (Nexus, NPM) *: +2&lt;br/&gt;
 &#160;&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/add.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&#160;author and public can be updated individually, also from external (via REST), e.g. CI-System&lt;br/&gt;
 maybe even the author server could be the host of the repository!&lt;/p&gt;

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

&lt;p&gt;&lt;b&gt;Problem&lt;/b&gt;&#160;*&lt;/p&gt;

&lt;p&gt;All the approaches suffer from the following problem: regardless the fact that publishing is transactional, &lt;b&gt;reloading definitions on public is &lt;em&gt;not&lt;/em&gt; &quot;transactional&quot;&lt;/b&gt;; at least if you have many files/folders in your resources folder, scanning / reloading light modules takes some seconds. If in that particular moment user requests to pages/components using&#160;these definitions arrive, (Freemarker) exceptions will be thrown.&lt;/p&gt;

&lt;p&gt;I see two ways to solve this - very important - issue: &lt;br/&gt;
 1) &lt;b&gt;Implement definition reloading transactionally&lt;/b&gt;: Magnolia dismisses old definitions with new ones only after the new ones have been instantiated fully; +1&lt;br/&gt;
 2) &lt;b&gt;Load balancer control&lt;/b&gt; to handle this case; this breaks, however, approaches 1 &amp;amp; 2 as there&apos;s no way to hook LB-switches between publication or NFS distribution&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </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_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>Thu, 4 Feb 2016 16:59:40 +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_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>czimmermann</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            4 years, 47 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>bwarrick</customfieldvalue>
            <customfieldvalue>cringele</customfieldvalue>
            <customfieldvalue>czimmermann</customfieldvalue>
            <customfieldvalue>nbarbe</customfieldvalue>
            <customfieldvalue>runger</customfieldvalue>
            <customfieldvalue>viet.nguyen</customfieldvalue>
            <customfieldvalue>vivi</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i05lnz:</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_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  class="aui-lozenge" 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>0/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: 0%; 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="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <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="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <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="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <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="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <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="unchecked"><path d="M0.441406 6.94141C0.441406 5.28455 1.78455 3.94141 3.44141 3.94141H15.4414C17.0983 3.94141 18.4414 5.28455 18.4414 6.94141V18.9414C18.4414 20.5983 17.0983 21.9414 15.4414 21.9414H3.44141C1.78455 21.9414 0.441406 20.5983 0.441406 18.9414V6.94141Z" fill="#EFF4FB" /><path fill-rule="evenodd" clip-rule="evenodd" d="M12.4414 3.94141H3.44141C1.78455 3.94141 0.441406 5.28455 0.441406 6.94141V18.9414C0.441406 20.5983 1.78455 21.9414 3.44141 21.9414H15.4414C17.0983 21.9414 18.4414 20.5983 18.4414 18.9414V9.94141H17.4414V18.9414C17.4414 20.046 16.546 20.9414 15.4414 20.9414H3.44141C2.33684 20.9414 1.44141 20.046 1.44141 18.9414V6.94141C1.44141 5.83684 2.33684 4.94141 3.44141 4.94141H12.4414V3.94141Z" fill="#ADBBD0" /><path d="M21.5306 5.91574L19.3486 4.58101L21.5306 3.24628C21.5681 3.22328 21.595 3.18633 21.6053 3.14348C21.6156 3.10063 21.6084 3.05545 21.5855 3.01792L20.9444 1.96985C20.8966 1.89162 20.7942 1.86696 20.716 1.91479L18.6331 3.18898V0.747138C18.6331 0.65546 18.5587 0.581055 18.4671 0.581055H17.2386C17.1469 0.581055 17.0725 0.65546 17.0725 0.747138V3.18898L14.9896 1.91487C14.9112 1.86704 14.8091 1.89162 14.7612 1.96993L14.1201 3.018C14.0972 3.05554 14.09 3.10071 14.1003 3.14356C14.1106 3.18641 14.1375 3.22336 14.175 3.24637L16.3571 4.58101L14.175 5.91574C14.1375 5.93866 14.1106 5.9757 14.1003 6.01847C14.09 6.0614 14.0972 6.10657 14.1201 6.14411L14.7612 7.1921C14.8091 7.27032 14.9112 7.29507 14.9896 7.24724L17.0725 5.97304V8.41489C17.0725 8.50657 17.1469 8.58097 17.2386 8.58097H18.4671C18.5587 8.58097 18.6331 8.50657 18.6331 8.41489V5.97313L20.7161 7.24715C20.7943 7.29499 20.8967 7.27032 20.9444 7.19218L21.5856 6.14411C21.6085 6.10657 21.6157 6.0614 21.6054 6.01855C21.5952 5.97562 21.5682 5.93875 21.5306 5.91574Z" fill="#de350b" /></svg>
                        </span>
                                        <div style="cursor: default; text-align: left; flex-grow: 1; padding-right: 3px; margin-top: 2px;">
                                                
                                                
                                                <span >
                                                        <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_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>