<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Stroom – configuration</title>
    <link>/tags/configuration/</link>
    <description>Recent content in configuration on Stroom</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Tue, 11 Jul 2023 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="/tags/configuration/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Properties</title>
      <link>/docs/user-guide/properties/</link>
      <pubDate>Tue, 27 Jul 2021 00:00:00 +0000</pubDate>
      
      <guid>/docs/user-guide/properties/</guid>
      <description>
        
        
        &lt;p&gt;Properties are the means of configuring the Stroom application and are typically maintained by the Stroom system administrator.
The value of some properties are required in order for Stroom to function, e.g. database connection details, and thus need to be set prior to running Stroom.
Some properties can be changed at runtime to alter the behaviour of Stroom.&lt;/p&gt;
&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Property values can be defined in the following locations.&lt;/p&gt;
&lt;h3 id=&#34;system-default&#34;&gt;System Default&lt;/h3&gt;
&lt;p&gt;The system defaults are hard-coded into the Stroom application code by the developers and can&amp;rsquo;t be changed.
These represent reasonable defaults, where applicable, but may need to be changed, e.g. to reflect the scale of the Stroom system or the specific environment.&lt;/p&gt;
&lt;p&gt;The default property values can either be viewed in the Stroom user interface or in the file &lt;code&gt;config/config-defaults.yml&lt;/code&gt; in the Stroom distribution.
Properties can be accessed in the user interface by selecting this from the top menu:





  &lt;div class=&#34;stroom-theme-dark stroom-menu&#34;&gt;
    
    

      

      
      


      

  
  
  &lt;div class=&#34;stroom-menu-item-background&#34; style=&#34;margin-top: 0px;&#34;&gt;
    
    &lt;div class=&#34;stroom-menu-item &#34; &gt;

      &lt;div class=&#34;stroom-menu-item-text&#34;&gt;Tools
      &lt;/div&gt;
        &lt;div class=&#34;stroom-menu-item-arrow&#34;&gt;
          &lt;span class=&#34;stroom-icon inline-svg-button icon-button  &#34; &gt;
    &lt;span class=&#34;face&#34; title=&#34;Arrow right&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; width=&#34;1427.7665&#34; height=&#34;1427.7665&#34; viewBox=&#34;0 0 1427.7665 1427.7665&#34;&gt;&lt;g style=&#34;stroke:currentColor;stroke-width:167.567&#34;&gt;&lt;path d=&#34;m 415.05387,83.70929 c -39.92654,0.4303 -75.41463,48.3887 -40.0468,81.9121 C 567.552,348.69899 760.75555,531.15431 953.73208,713.82391 760.75555,896.49341 567.552,1078.9486 375.00707,1262.0262 c -46.19471,43.7855 28.48812,112.1966 76.0571,67.1681 195.93558,-185.823 392.95261,-370.82479 587.98693,-557.52749 5.6117,-4.8034 10.4633,-10.2473 14.4855,-16.1231 9.643,-12.4844 13.9638,-27.0796 13.6909,-41.7198 0.2729,-14.6402 -4.0479,-29.2354 -13.6909,-41.7198 -4.0222,-5.8758 -8.8738,-11.3198 -14.4855,-16.1231 C 844.01678,469.27821 646.99975,284.27629 451.06417,98.45319 439.91519,87.89979 427.27628,83.57749 415.05387,83.70929 Z&#34;/&gt;&lt;/g&gt;&lt;/svg&gt; &lt;/span&gt;
  &lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

      

      
      
        
      


      

  
  
  &lt;div class=&#34;stroom-menu-item-background&#34; style=&#34;margin-top: 7px;&#34;&gt;
    
    &lt;div class=&#34;stroom-menu-item stroom-menu-item-leaf&#34; &gt;
        &lt;div class=&#34;stroom-menu-item-icon&#34;&gt;
          &lt;span class=&#34;stroom-icon inline-svg-button icon-button  &#34; &gt;
    &lt;span class=&#34;face&#34; title=&#34;Properties&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; width=&#34;1792&#34; height=&#34;1792&#34; viewBox=&#34;0 0 1792 1792&#34;&gt;&lt;path style=&#34;fill:var(--icon-colour__orange)&#34; d=&#34;M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
  &lt;/span&gt;
        &lt;/div&gt;

      &lt;div class=&#34;stroom-menu-item-text&#34;&gt;Properties
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;/div&gt;


&lt;/p&gt;
&lt;h3 id=&#34;global-database-value&#34;&gt;Global Database Value&lt;/h3&gt;
&lt;p&gt;Global database values are property values stored in the database that are global across the whole cluster.&lt;/p&gt;
&lt;p&gt;The global database value is defined as a record in the &lt;code&gt;config&lt;/code&gt; table in the database.
The database record will only exist if a database value has explicitly been set.
The database value will apply to all nodes in the cluster, overriding the default value, unless a node also has a value set in its YAML configuration.&lt;/p&gt;
&lt;p&gt;Database values can be set from the Stroom user interface, accessed by selecting this from the top menu:&lt;/p&gt;





  &lt;div class=&#34;stroom-theme-dark stroom-menu&#34;&gt;
    
    

      

      
      


      

  
  
  &lt;div class=&#34;stroom-menu-item-background&#34; style=&#34;margin-top: 0px;&#34;&gt;
    
    &lt;div class=&#34;stroom-menu-item &#34; &gt;

      &lt;div class=&#34;stroom-menu-item-text&#34;&gt;Tools
      &lt;/div&gt;
        &lt;div class=&#34;stroom-menu-item-arrow&#34;&gt;
          &lt;span class=&#34;stroom-icon inline-svg-button icon-button  &#34; &gt;
    &lt;span class=&#34;face&#34; title=&#34;Arrow right&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; width=&#34;1427.7665&#34; height=&#34;1427.7665&#34; viewBox=&#34;0 0 1427.7665 1427.7665&#34;&gt;&lt;g style=&#34;stroke:currentColor;stroke-width:167.567&#34;&gt;&lt;path d=&#34;m 415.05387,83.70929 c -39.92654,0.4303 -75.41463,48.3887 -40.0468,81.9121 C 567.552,348.69899 760.75555,531.15431 953.73208,713.82391 760.75555,896.49341 567.552,1078.9486 375.00707,1262.0262 c -46.19471,43.7855 28.48812,112.1966 76.0571,67.1681 195.93558,-185.823 392.95261,-370.82479 587.98693,-557.52749 5.6117,-4.8034 10.4633,-10.2473 14.4855,-16.1231 9.643,-12.4844 13.9638,-27.0796 13.6909,-41.7198 0.2729,-14.6402 -4.0479,-29.2354 -13.6909,-41.7198 -4.0222,-5.8758 -8.8738,-11.3198 -14.4855,-16.1231 C 844.01678,469.27821 646.99975,284.27629 451.06417,98.45319 439.91519,87.89979 427.27628,83.57749 415.05387,83.70929 Z&#34;/&gt;&lt;/g&gt;&lt;/svg&gt; &lt;/span&gt;
  &lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

      

      
      
        
      


      

  
  
  &lt;div class=&#34;stroom-menu-item-background&#34; style=&#34;margin-top: 7px;&#34;&gt;
    
    &lt;div class=&#34;stroom-menu-item stroom-menu-item-leaf&#34; &gt;
        &lt;div class=&#34;stroom-menu-item-icon&#34;&gt;
          &lt;span class=&#34;stroom-icon inline-svg-button icon-button  &#34; &gt;
    &lt;span class=&#34;face&#34; title=&#34;Properties&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; width=&#34;1792&#34; height=&#34;1792&#34; viewBox=&#34;0 0 1792 1792&#34;&gt;&lt;path style=&#34;fill:var(--icon-colour__orange)&#34; d=&#34;M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
  &lt;/span&gt;
        &lt;/div&gt;

      &lt;div class=&#34;stroom-menu-item-text&#34;&gt;Properties
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;/div&gt;



&lt;p&gt;Some properties are marked &lt;em&gt;Read Only&lt;/em&gt; which means they cannot have a database value set for them.
These properties can only be altered via the YAML configuration file on each node.
Such properties are typically used to configure values required for Stroom to be able to boot, so it does not make sense for them to be configurable from the User Interface.&lt;/p&gt;
&lt;h3 id=&#34;yaml-configuration-file&#34;&gt;YAML Configuration file&lt;/h3&gt;
&lt;p&gt;Stroom is built on top of a framework called Dropwizard.
Dropwizard uses a YAML configuration file on each node to configure the application.
This is typically &lt;code&gt;config.yml&lt;/code&gt; and is located in the &lt;code&gt;config&lt;/code&gt; directory.&lt;/p&gt;
&lt;p&gt;For details of the structure of this file, see &lt;a href=&#34;../../docs/install-guide/configuration/stroom-and-proxy/common-configuration/&#34;&gt;Stroom and Stroom-Proxy Common Configuration&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;source-precedence&#34;&gt;Source Precedence&lt;/h2&gt;
&lt;p&gt;The three sources (&lt;em&gt;Default&lt;/em&gt;, &lt;em&gt;Database&lt;/em&gt; &amp;amp; &lt;em&gt;YAML&lt;/em&gt;) are listed in increasing priority, i.e. &lt;em&gt;YAML&lt;/em&gt; trumps &lt;em&gt;Database&lt;/em&gt;, which trumps &lt;em&gt;Default&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For example, in a two node cluster, this table shows the effective value of a property on each node.
A &lt;code&gt;-&lt;/code&gt; indicates the value has not been set in that source.
&lt;code&gt;NULL&lt;/code&gt; indicates that the value has been explicitly set to NULL.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Node1&lt;/th&gt;
&lt;th&gt;Node2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;red&lt;/td&gt;
&lt;td&gt;red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YAML&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Effective&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;red&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;blue&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Or where a Database value is set.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Node1&lt;/th&gt;
&lt;th&gt;Node2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;red&lt;/td&gt;
&lt;td&gt;red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;green&lt;/td&gt;
&lt;td&gt;green&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YAML&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Effective&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;green&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;blue&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Or where a YAML value is explicitly set to &lt;code&gt;NULL&lt;/code&gt;.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Node1&lt;/th&gt;
&lt;th&gt;Node2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;red&lt;/td&gt;
&lt;td&gt;red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;green&lt;/td&gt;
&lt;td&gt;green&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YAML&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Effective&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;green&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;NULL&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;data-types&#34;&gt;Data Types&lt;/h2&gt;
&lt;p&gt;Stroom property values can be set using a number of different data types.
Database property values are currently set in the user interface using the string form of the value.
For each of the data types defined below, there will be an example of how the data type is recorded in its string form.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Type&lt;/th&gt;
&lt;th&gt;Example UI String Forms&lt;/th&gt;
&lt;th&gt;Example YAML form&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Boolean&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; &lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;&lt;code&gt;This is a string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;quot;This is a string&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integer/Long&lt;/td&gt;
&lt;td&gt;&lt;code&gt;123&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;123&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.23&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.23&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stroom Duration&lt;/td&gt;
&lt;td&gt;&lt;code&gt;P30D&lt;/code&gt; &lt;code&gt;P1DT12H&lt;/code&gt; &lt;code&gt;PT30S&lt;/code&gt; &lt;code&gt;30d&lt;/code&gt; &lt;code&gt;30s&lt;/code&gt; &lt;code&gt;30000&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;quot;P30D&amp;quot;&lt;/code&gt; &lt;code&gt;&amp;quot;P1DT12H&amp;quot;&lt;/code&gt; &lt;code&gt;&amp;quot;PT30S&amp;quot;&lt;/code&gt; &lt;code&gt;&amp;quot;30d&amp;quot;&lt;/code&gt; &lt;code&gt;&amp;quot;30s&amp;quot;&lt;/code&gt; &lt;code&gt;&amp;quot;30000&amp;quot;&lt;/code&gt; See &lt;a href=&#34;#stroom-duration-data-type&#34;&gt;Stroom Duration Data Type&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#red#Green#Blue&lt;/code&gt; &lt;code&gt;,1,2,3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;See &lt;a href=&#34;#list-data-type&#34;&gt;List Data Type&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Map&lt;/td&gt;
&lt;td&gt;&lt;code&gt;,=red=FF0000,Green=00FF00,Blue=0000FF&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;See &lt;a href=&#34;#map-data-type&#34;&gt;Map Data Type&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DocRef&lt;/td&gt;
&lt;td&gt;&lt;code&gt;,docRef(MyType,a56ff805-b214-4674-a7a7-a8fac288be60,My DocRef name)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;See &lt;a href=&#34;#docref-data-type&#34;&gt;DocRef Data Type&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enum&lt;/td&gt;
&lt;td&gt;&lt;code&gt;HIGH&lt;/code&gt; &lt;code&gt;LOW&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;quot;HIGH&amp;quot;&lt;/code&gt; &lt;code&gt;&amp;quot;LOW&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Path&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/some/path/to/a/file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;quot;/some/path/to/a/file&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ByteSize&lt;/td&gt;
&lt;td&gt;&lt;code&gt;32&lt;/code&gt;, &lt;code&gt;512Kib&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;32&lt;/code&gt;, &lt;code&gt;512Kib&lt;/code&gt; See &lt;a href=&#34;#byte-size-data-type&#34;&gt;Byte Size Data Type&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;stroom-duration-data-type&#34;&gt;Stroom Duration Data Type&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;Stroom Duration&lt;/em&gt; data type is used to specify time durations, for example the time to live of a cache or the time to keep data before it is purged.
&lt;em&gt;Stroom Duration&lt;/em&gt; uses a number of string forms to support legacy property values.&lt;/p&gt;
&lt;h4 id=&#34;iso-8601-durations&#34;&gt;ISO 8601 Durations&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Stroom Duration&lt;/em&gt; can be expressed using &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://en.wikipedia.org/wiki/ISO_8601&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;ISO 8601 (external link to https://en.wikipedia.org/wiki/ISO_8601)&#34;&gt;
    &lt;span&gt;ISO 8601&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
 duration strings.
It does NOT support the full &lt;em&gt;ISO 8601&lt;/em&gt; format, only &lt;code&gt;D&lt;/code&gt;, &lt;code&gt;H&lt;/code&gt;, &lt;code&gt;M&lt;/code&gt; and &lt;code&gt;S&lt;/code&gt;.
For details of how the string is parsed to a Stroom Duration, see &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/time/Duration.html#parse%28java.lang.CharSequence%29&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Duration (external link to https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/time/Duration.html#parse(java.lang.CharSequence))&#34;&gt;
    &lt;span&gt;Duration&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;The following are examples of &lt;em&gt;ISO 8601&lt;/em&gt; duration strings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;P30D&lt;/code&gt; - 30 days&lt;/li&gt;
&lt;li&gt;&lt;code&gt;P1DT12H&lt;/code&gt; - 1 day 12 hours (36 hours)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PT30S&lt;/code&gt; - 30 seconds&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PT0.5S&lt;/code&gt; - 500 milliseconds&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;legacy-stroom-durations&#34;&gt;Legacy Stroom Durations&lt;/h4&gt;
&lt;p&gt;This format was used in versions of Stroom older than v7 and is included to support legacy property values.&lt;/p&gt;
&lt;p&gt;The following are examples of legacy duration strings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;30d&lt;/code&gt; - 30 days&lt;/li&gt;
&lt;li&gt;&lt;code&gt;12h&lt;/code&gt; - 12 hours&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10m&lt;/code&gt; - 10 minutes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;30s&lt;/code&gt; - 30 seconds&lt;/li&gt;
&lt;li&gt;&lt;code&gt;500&lt;/code&gt; - 500 milliseconds&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Combinations such as &lt;code&gt;1m30s&lt;/code&gt; are not supported.&lt;/p&gt;
&lt;h3 id=&#34;list-data-type&#34;&gt;List Data Type&lt;/h3&gt;
&lt;p&gt;This type supports ordered lists of items, where an item can be of any supported data type, e.g. a list of strings or list of integers.&lt;/p&gt;
&lt;p&gt;The following is an example of how a property (&lt;code&gt;statusValues&lt;/code&gt;) that is a List of strings is represented in the YAML:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;  annotation:
    statusValues:
    - &amp;quot;New&amp;quot;
    - &amp;quot;Assigned&amp;quot;
    - &amp;quot;Closed&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would be represented as a string in the User Interface as:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;|New|Assigned|Closed&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;#delimiters-in-string-conversion&#34;&gt;Delimiters in String Conversion&lt;/a&gt; for details of how the items are delimited in the string.&lt;/p&gt;
&lt;p&gt;The following is an example of how a property (&lt;code&gt;cpu&lt;/code&gt;) that is a List of DocRefs is represented in the YAML:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;  statistics:
    internal:
      cpu:
      - type: &amp;quot;StatisticStore&amp;quot;
        uuid: &amp;quot;af08c4a7-ee7c-44e4-8f5e-e9c6be280434&amp;quot;
        name: &amp;quot;CPU&amp;quot;
      - type: &amp;quot;StroomStatsStore&amp;quot;
        uuid: &amp;quot;1edfd582-5e60-413a-b91c-151bd544da47&amp;quot;
        name: &amp;quot;CPU&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would be represented as a string in the User Interface as:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;|,docRef(StatisticStore,af08c4a7-ee7c-44e4-8f5e-e9c6be280434,CPU)|,docRef(StroomStatsStore,1edfd582-5e60-413a-b91c-151bd544da47,CPU)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;#delimiters-in-string-conversion&#34;&gt;Delimiters in String Conversion&lt;/a&gt; for details of how the items are delimited in the string.&lt;/p&gt;
&lt;h3 id=&#34;map-data-type&#34;&gt;Map Data Type&lt;/h3&gt;
&lt;p&gt;This type supports a collection of key/value pairs where the key is unique within the collection.
The type of the key must be string, but the type of the value can be any supported type.&lt;/p&gt;
&lt;p&gt;The following is an example of how a property (&lt;code&gt;mapProperty&lt;/code&gt;) that is a map of string =&amp;gt; string would be represented in the YAML:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;mapProperty:
  red: &amp;quot;FF0000&amp;quot;
  green: &amp;quot;00FF00&amp;quot;
  blue: &amp;quot;0000FF&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would be represented as a string in the User Interface as:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;,=red=FF0000,Green=00FF00,Blue=0000FF&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The delimiter between pairs is defined first, then the delimiter for the key and value.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;#delimiters-in-string-conversion&#34;&gt;Delimiters in String Conversion&lt;/a&gt; for details of how the items are delimited in the string.&lt;/p&gt;
&lt;h3 id=&#34;docref-data-type&#34;&gt;DocRef Data Type&lt;/h3&gt;
&lt;p&gt;A DocRef (or Document Reference) is a type specific to Stroom that defines a reference to an instance of a Document within Stroom, e.g. an XSLT, Pipeline, Dictionary, etc.
A DocRef consists of three parts, the type, the &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://en.wikipedia.org/wiki/Universally_unique_identifier&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;UUID (external link to https://en.wikipedia.org/wiki/Universally_unique_identifier)&#34;&gt;
    &lt;span&gt;UUID&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
 and the name of the Document.&lt;/p&gt;
&lt;p&gt;The following is an example of how a property (&lt;code&gt;aDocRefProperty&lt;/code&gt;) that is a DocRef would be represented in the YAML:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;aDocRefProperty:
  type: &amp;quot;MyType&amp;quot;
  uuid: &amp;quot;a56ff805-b214-4674-a7a7-a8fac288be60&amp;quot;
  name: &amp;quot;My DocRef name&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This would be represented as a string in the User Interface as:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;,docRef(MyType,a56ff805-b214-4674-a7a7-a8fac288be60,My DocRef name)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&#34;#delimiters-in-string-conversion&#34;&gt;Delimiters in String Conversion&lt;/a&gt; for details of how the items are delimited in the string.&lt;/p&gt;
&lt;h3 id=&#34;byte-size-data-type&#34;&gt;Byte Size Data Type&lt;/h3&gt;
&lt;p&gt;The Byte Size data type is used to represent a quantity of bytes using the &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://en.wikipedia.org/wiki/Binary_prefix&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;IEC (external link to https://en.wikipedia.org/wiki/Binary_prefix)&#34;&gt;
    &lt;span&gt;IEC&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
 standard.
Quantities are represented as powers of 1024, i.e. a Kib (Kibibyte) means 1024 bytes.&lt;/p&gt;
&lt;p&gt;Examples of Byte Size values in string form are (a YAML value would optionally be surrounded with double quotes):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32&lt;/code&gt;, &lt;code&gt;32b&lt;/code&gt;, &lt;code&gt;32B&lt;/code&gt;, &lt;code&gt;32bytes&lt;/code&gt; - 32 bytes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt;, &lt;code&gt;32KB&lt;/code&gt;, &lt;code&gt;32KiB&lt;/code&gt; - 32 kibibytes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;32M&lt;/code&gt;, &lt;code&gt;32MB&lt;/code&gt;, &lt;code&gt;32MiB&lt;/code&gt; - 32 mebibytes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;32G&lt;/code&gt;, &lt;code&gt;32GB&lt;/code&gt;, &lt;code&gt;32GiB&lt;/code&gt; - 32 gibibytes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;32T&lt;/code&gt;, &lt;code&gt;32TB&lt;/code&gt;, &lt;code&gt;32TiB&lt;/code&gt; - 32 tebibytes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;32P&lt;/code&gt;, &lt;code&gt;32PB&lt;/code&gt;, &lt;code&gt;32PiB&lt;/code&gt; - 32 pebibytes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;*iB&lt;/code&gt; form is preferred as it is more explicit and avoids confusion with SI units.&lt;/p&gt;
&lt;h3 id=&#34;delimiters-in-string-conversion&#34;&gt;Delimiters in String Conversion&lt;/h3&gt;
&lt;p&gt;The string conversion used for collection types like &lt;em&gt;List&lt;/em&gt;, &lt;em&gt;Map&lt;/em&gt; etc. relies on the string form defining the delimiter(s) to use for the collection.
The delimiter(s) are added as the first n characters of the string form, e.g. &lt;code&gt;|red|green|blue&lt;/code&gt; or &lt;code&gt;|=red=FF0000|Green=00FF00|Blue=0000FF&lt;/code&gt;.
It is possible to use a number of different delimiters to allow for delimiter characters appearing in the actual value, e.g. &lt;code&gt;#some text#some text with a | in it&lt;/code&gt;
The following are the delimiter characters that can be used.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;|&lt;/code&gt;, &lt;code&gt;:&lt;/code&gt;, &lt;code&gt;;&lt;/code&gt;, &lt;code&gt;,&lt;/code&gt;, &lt;code&gt;!&lt;/code&gt;, &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;\&lt;/code&gt;, &lt;code&gt;#&lt;/code&gt;, &lt;code&gt;@&lt;/code&gt;, &lt;code&gt;~&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;, &lt;code&gt;_&lt;/code&gt;, &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;+&lt;/code&gt;, &lt;code&gt;?&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When Stroom records a property value to the database it may use a delimiter of its own choosing, ensuring that it picks a delimiter that is not used in the property value.&lt;/p&gt;
&lt;h3 id=&#34;paths&#34;&gt;Paths&lt;/h3&gt;
&lt;p&gt;File and directory paths can either be absolute (e.g. &lt;code&gt;/some/path/&lt;/code&gt;) or relative (e.g. &lt;code&gt;some/path&lt;/code&gt;).
All relative paths will be resolved to an absolute path using the value of &lt;code&gt;stroom.home&lt;/code&gt; as the base.&lt;/p&gt;
&lt;p&gt;Path values also support variable substitution.
For full details on the possible variable substitution options, see &lt;a href=&#34;../../docs/user-guide/pipelines/file-output/&#34;&gt;File Output&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;restart-required&#34;&gt;Restart Required&lt;/h2&gt;
&lt;p&gt;Some properties are marked as requiring a restart.
There are two scopes for this:&lt;/p&gt;
&lt;h3 id=&#34;requires-ui-refresh&#34;&gt;Requires UI Refresh&lt;/h3&gt;
&lt;p&gt;If a property is marked in UI as requiring a UI refresh then this means that a change to the property requires that the Stroom nodes serving the UI are restarted for the new value to take effect.&lt;/p&gt;
&lt;h3 id=&#34;requires-restart&#34;&gt;Requires Restart&lt;/h3&gt;
&lt;p&gt;If a property is marked in UI as requiring a restart then this means that a change to the property requires that all Stroom nodes are restarted for the new value to take effect.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Common Configuration</title>
      <link>/docs/install-guide/configuration/stroom-and-proxy/common-configuration/</link>
      <pubDate>Tue, 11 Jul 2023 00:00:00 +0000</pubDate>
      
      <guid>/docs/install-guide/configuration/stroom-and-proxy/common-configuration/</guid>
      <description>
        
        
        &lt;p&gt;This YAML file, sometimes known as the Dropwizard configuration file (as it conforms to a structure defined by Dropwizard) is the primary means of configuring Stroom/Stroom-Proxy.
As a minimum this file should be used to configure anything that needs to be set before stroom can start up, e.g. web server, logging, database connection details, etc.
It is also used to configure anything that is specific to a node in a stroom cluster.&lt;/p&gt;
&lt;p&gt;If you are using some form of scripted deployment, e.g. ansible then it can be used to set all stroom properties for the environment that stroom runs in.
If you are not using scripted deployments then you can maintain stroom&amp;rsquo;s node agnostic configuration properties via the user interface.&lt;/p&gt;
&lt;h2 id=&#34;config-file-structure&#34;&gt;Config File Structure&lt;/h2&gt;
&lt;p&gt;This file contains both the Dropwizard configuration settings (settings for ports, paths and application logging) and the Stroom/Stroom-Proxy application specific properties configuration.
The file is in YAML format and the application properties are located under the &lt;code&gt;appConfig&lt;/code&gt; key.
For details of the Dropwizard configuration structure, see &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;here (external link to https://www.dropwizard.io/en/latest/manual/configuration.html)&#34;&gt;
    &lt;span&gt;here&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
.&lt;/p&gt;
&lt;p&gt;The file is split into sections using these keys:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;server&lt;/code&gt; - Configuration of the web server, e.g. ports, paths, request logging.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logging&lt;/code&gt; - Configuration of application logging&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jerseyClients&lt;/code&gt; - Configuration of the various Jersey HTTP clients in use.
See &lt;a href=&#34;#jersey-http-client-configuration&#34;&gt;Jersey HTTP Client Configuration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Application specific configuration:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;appConfig&lt;/code&gt; - The Stroom configuration properties.
These properties can be viewed/modified in the user interface.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;proxyConfig&lt;/code&gt; - The Stroom-Proxy configuration properties.
These properties can be viewed/modified in the user interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following is an example of the YAML configuration file for Stroom:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;# Dropwizard configuration section
server:
  # e.g. ports and paths
logging:
  # e.g. logging levels/appenders

jerseyClients:
  DEFAULT:
    # Configuration of the named client

# Stroom properties configuration section
appConfig:
  commonDbDetails:
    connection:
      jdbcDriverClassName: ${STROOM_JDBC_DRIVER_CLASS_NAME:-com.mysql.cj.jdbc.Driver}
      jdbcDriverUrl: ${STROOM_JDBC_DRIVER_URL:-jdbc:mysql://localhost:3307/stroom?useUnicode=yes&amp;amp;characterEncoding=UTF-8}
      jdbcDriverUsername: ${STROOM_JDBC_DRIVER_USERNAME:-stroomuser}
      jdbcDriverPassword: ${STROOM_JDBC_DRIVER_PASSWORD:-stroompassword1}
  contentPackImport:
    enabled: true
  ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The following is an example of the YAML configuration file for Stroom-Proxy:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;# Dropwizard configuration section
server:
  # e.g. ports and paths
logging:
  # e.g. logging levels/appenders

jerseyClients:
  DEFAULT:
    # Configuration of the named client

# Stroom properties configuration section
proxyConfig:
  path:
    home: /some/path
  ...
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;appconfig-section&#34;&gt;&lt;code&gt;appConfig&lt;/code&gt; Section&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;appConfig&lt;/code&gt; section is special as it maps to the Properties seen in the Stroom user interface so values can be managed in the file or via the Properties screen in the Stroom UI.
The other sections of the file can only be managed via the YAML file.
In the Stroom user interface, properties are named with a dot notation key, e.g. &lt;em&gt;stroom.contentPackImport.enabled&lt;/em&gt;.
Each part of the dot notation property name represents a key in the YAML file, e.g. for this example, the location in the YAML would be:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;appConfig:
  contentPackImport:
    enabled: true   # stroom.contentPackImport.enabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;em&gt;stroom&lt;/em&gt; part of the dot notation name is replaced with &lt;em&gt;appConfig&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For more details on the link between this YAML file and Stroom Properties, see &lt;a href=&#34;../../docs/user-guide/properties/&#34;&gt;Properties&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;variable-substitution&#34;&gt;Variable Substitution&lt;/h3&gt;
&lt;p&gt;The YAML configuration file supports Bash style variable substitution in the form of:&lt;/p&gt;

  






&lt;div class=&#34;code-toolbar&#34;&gt;
  &lt;pre 
    class=&#34;command-line language-bash&#34; 
    data-user=&#34;user&#34; 
    data-host=&#34;localhost&#34; 
    data-continuation-str=&#34;\&#34;
    data-filter-output=&#34;(out)&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;${ENV_VAR_NAME:-value_if_not_set}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This allows values to be set either directly in the file or via an environment variable, e.g.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;      jdbcDriverClassName: ${STROOM_JDBC_DRIVER_CLASS_NAME:-com.mysql.cj.jdbc.Driver}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In the above example, if the &lt;em&gt;STROOM_JDBC_DRIVER_CLASS_NAME&lt;/em&gt; environment variable is not set then the value &lt;em&gt;com.mysql.cj.jdbc.Driver&lt;/em&gt; will be used instead.&lt;/p&gt;
&lt;h3 id=&#34;typed-values&#34;&gt;Typed Values&lt;/h3&gt;
&lt;p&gt;YAML supports typed values rather than just strings, see &lt;a href=&#34;https://yaml.org/refcard.html&#34;&gt;https://yaml.org/refcard.html&lt;/a&gt;.
YAML understands booleans, strings, integers, floating point numbers, as well as sequences/lists and maps.
Some properties will be represented differently in the user interface to the YAML file.
This is due to how values are stored in the database and how the current user interface works.
This will likely be improved in future versions.
For details of how different types are represented in the YAML and the UI, see &lt;a href=&#34;../../docs/user-guide/properties#data-types&#34;&gt;Data Types&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;server-configuration&#34;&gt;Server configuration&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;server&lt;/code&gt; section controls the configuration of the Jetty web server.&lt;/p&gt;
&lt;p&gt;For full details of how to configure the &lt;code&gt;server&lt;/code&gt; section see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html#servers&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Server (external link to https://www.dropwizard.io/en/latest/manual/configuration.html#servers)&#34;&gt;
    &lt;span&gt;Server&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html#connectors&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Connectors (external link to https://www.dropwizard.io/en/latest/manual/configuration.html#connectors)&#34;&gt;
    &lt;span&gt;Connectors&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following is an example of the configuration for an application listening on HTTP.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;server:
  # The base path for the main application and its API
  applicationContextPath: &amp;quot;/&amp;quot;
  # The base path for the admininstration pages/API
  # For Stroom-Proxy the default is /proxyAdmin
  adminContextPath: &amp;quot;/stroomAdmin&amp;quot;

  # The scheme/port for the main application and its API
  applicationConnectors:
    - type: http
      # For Stroom-Proxy the default is 8090
      port: 8080
      # Uses X-Forwarded-*** headers in request log instead of proxy server details.
      useForwardedHeaders: true

  # The scheme/port for the admininstration pages/API
  adminConnectors:
    - type: http
      # For Stroom-Proxy the default is 8091
      port: 8081
      useForwardedHeaders: true
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;common-application-configuration&#34;&gt;Common Application Configuration&lt;/h2&gt;
&lt;p&gt;This section details configuration that is common in both the Stroom &lt;code&gt;appConfig&lt;/code&gt; and Stroom-Proxy &lt;code&gt;proxyConfig&lt;/code&gt; sections.&lt;/p&gt;
&lt;h3 id=&#34;receive-configuration&#34;&gt;Receive Configuration&lt;/h3&gt;
&lt;p&gt;Configuration for controlling the receipt of data into Stroom and Stroom-Proxy through the &lt;code&gt;/datafeed&lt;/code&gt; API.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;appConfig / proxyConfig:
  receive:
    # An allow-list containing IP addresses or fully qualified host names to verify that the direct sender
    # of a request (e.g. a load balancer or reverse proxy) is trusted to supply certificate/DN headers
    # as configured with &#39;x509CertificateHeader&#39; and &#39;x509CertificateDnHeader&#39;.
    # If this list is null/empty then no check will be made on the client&#39;s address.
    allowedCertificateProviders: []
    # Standard cache configuration block for the cache of authenticated Datafeed Keys.
    # This cache is used to avoid having to re-verify every data feed key.
    authenticatedDataFeedKeyCache:
    # If true, the sender will be authenticated using a certificate or token depending on the
    # state of tokenAuthenticationEnabled and certificateAuthenticationEnabled. If the sender
    # can&#39;t be authenticated an error will be returned to the client
    # If false, then authentication will be performed if a token/key/certificate
    # is present, otherwise data will be accepted without a sender identity
    authenticationRequired: true
    # The meta key that is used to identify the owner of a Data Feed Key. This
    # may be an AccountId or similar. It must be provided as a header when sending data
    # using the associated Data Feed Key, and its value will be checked against the value
    # held with the hashed Data Feed Key by Stroom. Default value is &#39;AccountId&#39;.
    # Case does not matter
    dataFeedKeyOwnerMetaKey: &amp;quot;AccountId&amp;quot;
    # The directory where Stroom will look for datafeed key files.
    # Only used if datafeedKeyAuthenticationEnabled is true
    # If the value is a relative path then it will be treated as being
    # relative to stroom.path.home. Data feed key files must have the extension .json.
    # Files in sub-directory will be ignored.
    dataFeedKeysDir: &amp;quot;data_feed_keys&amp;quot;
    # The types of authentication that are enabled for data receipt.
    # One or more of 
    # TOKEN - A Stroom API Key or an OAuth token in the &#39;Authorization&#39; header
    # CERTIFICATE - An X509 certificate on the request or a DN in the header configured
    #               by .receive.x509CertificateDnHeader
    # DATA_FEED_KEY - A Stroom Data Feed Key in the &#39;Authorization&#39; header
    enabledAuthenticationTypes:
    - &amp;quot;TOKEN&amp;quot;
    - &amp;quot;CERTIFICATE&amp;quot;
    # If receiptCheckMode is RECEIPT_POLICY or FEED_STATUS and stroom/proxy is
    # unable to perform the receipt check, then this action will be used as a fallback
    # until the receipt check can be successfully performed
    fallbackReceiveAction: &amp;quot;RECEIVE&amp;quot;
    # If true the client is not required to set the &#39;Feed&#39; header. If Feed is not present
    # a feed name will be generated based on the template specified by the
    # &#39;feedNameTemplate&#39; property. If false (the default), a populated &#39;Feed&#39;
    # header will be required
    feedNameGenerationEnabled: false
    # The set of header keys are mandatory if feedNameGenerationEnabled is set to true.
    # Should be set to complement the header keys used in &#39;feedNameTemplate&#39;, but may be a
    # sub-set of those in the template to allow for optional headers
    feedNameGenerationMandatoryHeaders:
    - &amp;quot;AccountId&amp;quot;
    - &amp;quot;Component&amp;quot;
    - &amp;quot;Format&amp;quot;
    - &amp;quot;Schema&amp;quot;
    # A template for generating a feed name from a set of headers. The value of
    # each header referenced in the template will have any unsuitable characters
    # replaced with &#39;_&#39;.
    # If this property is set in the YAML file, use single quotes to prevent the
    # variables being expanded when the config file is loaded
    feedNameTemplate: &amp;quot;${accountid}-${component}-${format}-${schema}&amp;quot;
    # If defined then states the maximum size of a request (uncompressed for gzip requests).
    # Will return a 413 Content Too Long response code for any requests exceeding this
    # value. If undefined then there is no limit to the size of the request.
    maxRequestSize: null
    # Set of supported meta type names. This set must contain all of the names
    # in the default value for this property but can contain additional names.
    metaTypes:
    - &amp;quot;Context&amp;quot;
    - &amp;quot;Detections&amp;quot;
    - &amp;quot;Error&amp;quot;
    - &amp;quot;Events&amp;quot;
    - &amp;quot;Meta Data&amp;quot;
    - &amp;quot;Raw Events&amp;quot;
    - &amp;quot;Raw Reference&amp;quot;
    - &amp;quot;Records&amp;quot;
    - &amp;quot;Reference&amp;quot;
    - &amp;quot;Test Events&amp;quot;
    - &amp;quot;Test Reference&amp;quot;
    # Controls how or whether data is checked on receipt. Valid values
    # (FEED_STATUS|RECEIPT_POLICY|RECEIVE_ALL|REJECT_ALL|DROP_ALL)
    receiptCheckMode: &amp;quot;FEED_STATUS&amp;quot;
    # The format of the Distinguished Name used in the certificate. Valid values are
    # LDAP and OPEN_SSL, where LDAP is the default
    x509CertificateDnFormat: &amp;quot;LDAP&amp;quot;
    # The HTTP header key used to extract the distinguished name (DN) as obtained from an X509 certificate.
    # This is used when a load balancer does the SSL/mTLS termination and passes the client DN though
    # in a header. Only used for
    # authentication if a value is set and &#39;enabledAuthenticationTypes&#39; includes CERTIFICATE
    x509CertificateDnHeader: &amp;quot;X-SSL-CLIENT-S-DN&amp;quot;
    # The HTTP header key used to extract an X509 certificate. This is used when a load balancer does the
    # SSL/mTLS termination and passes the client certificate though in a header. Only used for
    # authentication if a value is set and &#39;enabledAuthenticationTypes&#39; includes CERTIFICATE
    x509CertificateHeader: &amp;quot;X-SSL-CERT&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;cache-configuration&#34;&gt;Cache Configuration&lt;/h3&gt;
&lt;p&gt;Multiple configuration branches in both Stroom and Stroom-Proxy have one or more properties for configuring a cache.
Each of these share the same structure and will typically be named &lt;code&gt;xxxCache&lt;/code&gt;, e.g. &lt;code&gt;feedStatusCache&lt;/code&gt; or &lt;code&gt;metaTypeCache&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;

    The default values for each property within the cache config will be specific to the cache.
Care needs to be taken when changing the cache properties to avoid changing the behaviour of the cache, e.g. changing from having a &lt;code&gt;expireAfterWrite&lt;/code&gt; value to having a &lt;code&gt;expireAfterAccess&lt;/code&gt; value may prevent items from aging off as expected.

&lt;/div&gt;


&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;      xxxCache:
        # Specifies that each entry should be automatically removed from the cache once
        # this duration has elapsed after the entry&#39;s creation, the most recent replacement of
        # its value, or its last read. In ISO-8601 duration format, e.g. &#39;PT10M&#39;. If no value is set then
        #  entries will not be aged out based these criteria
        expireAfterAccess: 
        # Specifies that each entry should be automatically removed from the cache once
        # a fixed duration has elapsed after the entry&#39;s creation, or the most recent replacement of its value.
        # In ISO-8601 duration format, e.g. &#39;PT5M&#39;. If no value is set then entries will not be aged out based on
        # these criteria.
        expireAfterWrite:
        # Specifies the maximum number of entries the cache may contain. Note that the cache
        # may evict an entry before this limit is exceeded or temporarily exceed the threshold while evicting.
        # As the cache size grows close to the maximum, the cache evicts entries that are less likely to be used
        # again. For example, the cache may evict an entry because it hasn&#39;t been used recently or very often.
        # When size is zero, elements will be evicted immediately after being loaded into the cache. This can
        # be useful in testing, or to disable caching temporarily without a code change. If no value is set then
        # no size limit will be applied
        maximumSize:
        # Specifies that each entry should be automatically refreshed in the cache after
        # a fixed duration has elapsed after the entry&#39;s creation, or the most recent replacement of its value.
        # In ISO-8601 duration format, e.g. &#39;PT5M&#39;. Refreshing is performed asynchronously and the current value
        # provided until the refresh has occurred. This mechanism allows the cache to update values without any
        # impact on performance
        refreshAfterWrite:
        # Determines whether/how statistics are captured on cache usage
        # (e.g. hits, misses, entries, etc.). Values are (NONE, INTERNAL, DROPWIZARD_METRICS).
        # NONE means capture no stats, offering a very slight performance gain, but the Caches screen in Stroom
        # won&#39;t be able to show any stats for this cache.
        # INTERNAL means the stats are captured but are only accessible via the Stroom Caches screen, thus not
        # suitable for Stroom-Proxy.
        # DROPWIZARD_METRICS means the stats are captured and are accessible via the Stroom Caches screen AND via
        # the metrics servlet on the admin port for integration with tools like Graphite/Collectd
        # The default for Stroom is INTERNAL, the default for Stroom-Proxy is DROPWIZARD_METRICS
        statisticsMode:
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;open-id-configuration&#34;&gt;Open ID Configuration&lt;/h3&gt;
&lt;p&gt;Both Stroom and Stroom-Proxy share the same configuration structure for configuring Open ID Connect authentication.
This section of config is only applicable if &lt;code&gt;appConfig/proxyConfig.security.authentication.identityProviderType&lt;/code&gt; is set to &lt;code&gt;EXTERNAL_IDP&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;appConfig / proxyConfig:
  security:
    authentication:
      openId:
        # A set of audience claim values, one of which must appear in the audience
        # claim in the token.
        # If empty, no validation will be performed on the audience claim
        # If audienceClaimRequired is false and there is no audience claim in the token,
        # then allowedAudiences will be ignored
        allowedAudiences: []
        # If true the token will fail validation if the audience claim is not present
        # and allowedAudiences is not empty
        audienceClaimRequired: false
        # The authentication endpoint used in OpenId authentication
        # Should only be set if not using a configuration endpoint
        authEndpoint: null
        # If custom scopes are required for client_credentials requests then this should be
        # set to replace the default of &#39;openid&#39;. E.g. for Azure AD you will likely need to set
        # this to &#39;openid&#39; and &#39;&amp;lt;your-app-id-uri&amp;gt;/.default&amp;gt;&#39;
        clientCredentialsScopes:
        - &amp;quot;openid&amp;quot;
        # The client ID used in OpenId authentication.
        clientId: null
        # The client secret used in OpenId authentication.
        clientSecret: null
        # If using an AWS load balancer to handle the authentication, set this to the Amazon
        # Resource Names (ARN) of the load balancer(s) fronting stroom, which will be something
        # like &#39;arn:aws:elasticloadbalancing:region-code:account-id:loadbalance
        # /app/load-balancer-name/load-balancer-id&#39;.
        # This config value will be used to verify the &#39;signer&#39; in the JWT header.
        # Each value is the first N characters of the ARN and as a minimum must include up to
        # the colon after the account-id, i.e.
        # &#39;arn:aws:elasticloadbalancing:region-code:account-id:&#39;
        # See https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-authenticate-users.html#user-claims-encodin
        expectedSignerPrefixes: []
        # Some OpenId providers, e.g. AWS Cognito, require a form to be used for token requests.
        formTokenRequest: true
        # A template to build the user&#39;s full name using claim values as variables in the
        # template. E.g &#39;${firstName} ${lastName}&#39; or &#39;${name}&#39;.
        # If this property is set in the YAML file, use single quotes to prevent the
        # variables being expanded when the config file is loaded. Note: claim names are
        # case sensitive
        fullNameClaimTemplate: &amp;quot;${name}&amp;quot;
        # The type of Open ID Connect identity provider that stroom/prox
        # will use for authentication. Valid values are:
        # INTERNAL_IDP - Stroom&#39;s internal IDP. Not valid for Stroom-Proxy.
        # EXTERNAL_IDP - An external IDP such as KeyCloak/Cognito,
        # TEST_CREDENTIALS - Use hard-coded authentication credentials for test/demo only and
        # NO_IDP - No IDP is used. API keys are set in config for feed status checks. Only for use by Stroom-Proxy
        # Changing this property will require a restart of the application
        identityProviderType: &amp;quot;NO_IDP&amp;quot;
        # The issuer used in OpenId authentication.
        # Should only be set if not using a configuration endpoint
        issuer: null
        # The URI to obtain the JSON Web Key Set from in OpenId authentication
        # Should only be set if not using a configuration endpoint
        jwksUri: null
        # The logout endpoint for the identity provider
        # This is not typically provided by the configuration endpoint
        logoutEndpoint: null
        # The name of the URI parameter to use when passing the logout redirect URI to the IDP.
        # This is here as the spec seems to have changed from &#39;redirect_uri&#39; to
        # &#39;post_logout_redirect_uri&#39;
        logoutRedirectParamName: &amp;quot;post_logout_redirect_uri&amp;quot;
        # You can set an openid-configuration URL to automatically configure much of the openid
        # settings. Without this the other endpoints etc must be set manually
        openIdConfigurationEndpoint: null
        # If the token is signed by AWS then use this pattern to form the URI to obtain the
        # public key from. The pattern supports the variables &#39;${awsRegion}&#39; and &#39;${keyId}&#39;.
        # Multiple instances of a variable are also supported.
        # If this property is set in the YAML file, use single quotes to prevent the
        # variables being expanded when the config file is loaded.
        publicKeyUriPattern: &amp;quot;https://public-keys.auth.elb.${awsRegion}.amazonaws.com/${keyId}&amp;quot;
        # If custom auth flow request scopes are required then this should be set to replace
        # the defaults of &#39;openid&#39; and &#39;email&#39;.
        requestScopes:
        - &amp;quot;openid&amp;quot;
        - &amp;quot;email&amp;quot;
        # The token endpoint used in OpenId authentication
        # Should only be set if not using a configuration endpoint
        tokenEndpoint: null
        # The Open ID Connect claim used to link an identity on the IDP to a stroom user.
        # Must uniquely identify the user on the IDP and not be subject to change. Uses &#39;sub&#39; by
        # default
        uniqueIdentityClaim: &amp;quot;sub&amp;quot;
        # The Open ID Connect claim used to provide a more human friendly username for a user
        # than that provided by uniqueIdentityClaim. It is not guaranteed to be unique and may
        # change
        userDisplayNameClaim: &amp;quot;preferred_username&amp;quot;
        # A set of issuers (in addition to the &#39;issuer&#39; property that is provided by the IDP
        # that are deemed valid when seen in a token. If no additional valid issuers are
        # required then set this to an empty set. Also this is used to validate the &#39;issuer&#39;
        # returned by the IDP when it is not a sub path of &#39;openIdConfigurationEndpoint&#39;. If
        # this set is empty then Stroom will verify that the
        validIssuers: []
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;jersey-http-client-configuration&#34;&gt;Jersey HTTP Client Configuration&lt;/h2&gt;
&lt;p&gt;Stroom and Stroom Proxy use the &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://eclipse-ee4j.github.io/jersey/&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Jersey (external link to https://eclipse-ee4j.github.io/jersey/)&#34;&gt;
    &lt;span&gt;Jersey&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
 client for making HTTP connections with other nodes or other systems (e.g. Open ID Connect identity providers).
In the YAML file, the &lt;code&gt;jerseyClients&lt;/code&gt; key controls the configuration of the various clients in use.&lt;/p&gt;
&lt;p&gt;To allow complete control of the client configuration, Stroom uses the concept of named client configurations.
Each named client will be unique to a destination (where a destination is typically a server or a cluster of functionally identical servers).
Thus the configuration of the connections to each of those destinations can be configured independently.&lt;/p&gt;
&lt;p&gt;The client names are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DEFAULT&lt;/code&gt; - The default client configuration used if a named configuration is not present.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AWS_PUBLIC_KEYS&lt;/code&gt; - Connections to fetch AWS public keys used in Open ID Connect authentication.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DOWNSTREAM&lt;/code&gt; - Connections to downstream proxy/stroom instances to check feed status. (&lt;strong&gt;Stroom Proxy only&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPEN_ID&lt;/code&gt; - Connections to an Open ID Connect identity provider, e.g. Cognito, Azure AD, KeyCloak, etc.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STROOM&lt;/code&gt; - Inter-node communications within the Stroom cluster (&lt;strong&gt;Stroom only&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;


    If a named configuration does not exist then the configuration for &lt;code&gt;DEFAULT&lt;/code&gt; will be used.
If &lt;code&gt;DEFAULT&lt;/code&gt; is not defined in the configuration then the Dropwizard defaults will be used.

&lt;/div&gt;


&lt;p&gt;The following is an example of how the clients are configured in the YAML file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;jerseyClients:
  DEFAULT:
    # Default client configuration, e.g.
    timeout: 500ms
  STROOM:
    # Configuration items for stroom inter-node communications
    timeout: 30s
  # etc.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The configuration keys (along with their default values and descriptions) for each client can be found here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html#jerseyclient&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Jersey Client (external link to https://www.dropwizard.io/en/latest/manual/configuration.html#jerseyclient)&#34;&gt;
    &lt;span&gt;Jersey Client&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html#httpclient&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Base HTTP Client (external link to https://www.dropwizard.io/en/latest/manual/configuration.html#httpclient)&#34;&gt;
    &lt;span&gt;Base HTTP Client&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html#proxy&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Proxy server settings (external link to https://www.dropwizard.io/en/latest/manual/configuration.html#proxy)&#34;&gt;
    &lt;span&gt;Proxy server settings&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html#tls&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;TLS settings (external link to https://www.dropwizard.io/en/latest/manual/configuration.html#tls)&#34;&gt;
    &lt;span&gt;TLS settings&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following is another example including most keys:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;jerseyClients:
  DEFAULT:
    minThreads: 1
    maxThreads: 128
    workQueueSize: 8
    gzipEnabled: true
    gzipEnabledForRequests: true
    chunkedEncodingEnabled: true
    timeout: 500ms
    connectionTimeout: 500ms
    timeToLive: 1h
    cookiesEnabled: false
    maxConnections: 1024
    maxConnectionsPerRoute: 1024
    keepAlive: 0ms
    retries: 0
    userAgent: &amp;lt;application name&amp;gt; (&amp;lt;client name&amp;gt;)
    proxy:
      host: 192.168.52.11
      port: 8080
      scheme : http
      auth:
        username: secret
        password: stuff
        authScheme: NTLM
        realm: realm
        hostname: host
        domain: WINDOWSDOMAIN
        credentialType: NT
      nonProxyHosts:
        - localhost
        - &#39;192.168.52.*&#39;
        - &#39;*.example.com&#39;
    tls:
      protocol: TLSv1.2
      provider: SunJSSE
      verifyHostname: true
      keyStorePath: /path/to/file
      keyStorePassword: changeit
      keyStoreType: JKS
      trustStorePath: /path/to/file
      trustStorePassword: changeit
      trustStoreType: JKS
      trustSelfSignedCertificates: false
      supportedProtocols: TLSv1.1,TLSv1.2
      supportedCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
      certAlias: alias-of-specific-cert
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;



    &lt;p&gt;Duration values in the Jersey client configuration blocks are different to &lt;a href=&#34;#stroom-duration-data-type&#34;&gt;Stroom Durations&lt;/a&gt; defined in Stroom properties.
They are defined as a numeric value and a unit suffix.
Typical suffixes are (in ascending order): &lt;code&gt;ns&lt;/code&gt;, &lt;code&gt;us&lt;/code&gt;, &lt;code&gt;ms&lt;/code&gt;, &lt;code&gt;s&lt;/code&gt;, &lt;code&gt;m&lt;/code&gt;, &lt;code&gt;h&lt;/code&gt;, &lt;code&gt;d&lt;/code&gt;.
ISO 8601 duration strings are NOT supported, nor are values without a suffix.
&lt;span class=&#34;external-link&#34;&gt;
&lt;a href=&#34;https://github.com/dropwizard/dropwizard/blob/master/dropwizard-util/src/main/java/io/dropwizard/util/Duration.java&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Full list of duration suffixes and their aliases (external link to https://github.com/dropwizard/dropwizard/blob/master/dropwizard-util/src/main/java/io/dropwizard/util/Duration.java)&#34;&gt;
&lt;span&gt;Full list of duration suffixes and their aliases&lt;/span&gt;
&lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/span&gt;&lt;/p&gt;


&lt;/div&gt;



&lt;div class=&#34;alert alert-primary&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;


    The paths used for the key and trust stores will be treated in the same way as Stroom property paths, i.e. relative to &lt;code&gt;stroom.home&lt;/code&gt; if relative and supporting variable substitution.

&lt;/div&gt;


&lt;h2 id=&#34;logging-configuration&#34;&gt;Logging Configuration&lt;/h2&gt;
&lt;p&gt;The Dropwizard configuration file controls all the logging by the application.
In addition to the main application log, there are additional logs such as stroom user events (for audit), Stroom-Proxy send and receive logs and database migration logs.&lt;/p&gt;
&lt;p&gt;For full details of the logging configuration, see &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://www.dropwizard.io/en/latest/manual/configuration.html#logging&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Dropwizard Logging Configuration (external link to https://www.dropwizard.io/en/latest/manual/configuration.html#logging)&#34;&gt;
    &lt;span&gt;Dropwizard Logging Configuration&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;h3 id=&#34;request-log&#34;&gt;Request Log&lt;/h3&gt;
&lt;p&gt;The request log is slightly different to the other logs.
It logs all requests to the web server.
It is configured in the &lt;code&gt;server&lt;/code&gt; section.&lt;/p&gt;
&lt;p&gt;The property &lt;code&gt;archivedLogFilenamePattern&lt;/code&gt; controls rolling of the active log file.
The date pattern in the filename controls the frequency that the log files are rolled.
In this example, files will be rolled every 1 minute.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;server:
  requestLog:
    appenders:
    - type: file
      currentLogFilename: logs/access/access.log
      discardingThreshold: 0
      # Rolled and gzipped every minute
      archivedLogFilenamePattern: logs/access/access-%d{yyyy-MM-dd&#39;T&#39;HH:mm}.log.gz
      archivedFileCount: 10080
      logFormat: &#39;%h %l &amp;quot;%u&amp;quot; [%t] &amp;quot;%r&amp;quot; %s %b &amp;quot;%i{Referer}&amp;quot; &amp;quot;%i{User-Agent}&amp;quot; %D&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;logback-logs&#34;&gt;Logback Logs&lt;/h3&gt;
&lt;p&gt;Dropwizard uses &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://logback.qos.ch&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;Logback (external link to https://logback.qos.ch)&#34;&gt;
    &lt;span&gt;Logback&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
 for application level logging.
All logs in Stroom and Stroom-Proxy apart from the request log are Logback based logs.&lt;/p&gt;
&lt;p&gt;Logback uses the concept of &lt;em&gt;Loggers&lt;/em&gt; and &lt;em&gt;Appenders&lt;/em&gt;.
A &lt;em&gt;Logger&lt;/em&gt; is a named thing that produces log messages.
An &lt;em&gt;Appender&lt;/em&gt; is an output that a &lt;em&gt;Logger&lt;/em&gt; can append its log messages to.
Typical &lt;em&gt;Appenders&lt;/em&gt; are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File - appends messages to a file that may or may not be rolled.&lt;/li&gt;
&lt;li&gt;Console - appends messages to &lt;code&gt;stdout&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Syslog - appends messages to &lt;code&gt;syslog&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;loggers&#34;&gt;Loggers&lt;/h4&gt;
&lt;p&gt;A &lt;em&gt;Logger&lt;/em&gt; can append to more than one &lt;em&gt;Appender&lt;/em&gt; if required.
For example, the default configuration file for Stroom has two appenders for the application logs.
The rolled files from one appender are POSTed to Stroom to index its own logs, then deleted and the other is intended to
remain on the server until archived off to allow viewing by an administrator.&lt;/p&gt;
&lt;p&gt;A &lt;em&gt;Logger&lt;/em&gt; can be configured with a severity, valid severities are (&lt;code&gt;TRACE&lt;/code&gt;, &lt;code&gt;DEBUG&lt;/code&gt;, &lt;code&gt;WARN&lt;/code&gt;, &lt;code&gt;ERROR&lt;/code&gt;).
The severity set on a logger means that only messages with that severity or higher will be logged, with the rest not logged.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Logger&lt;/em&gt; names are typically the name of the Java class that is producing the log message.
You don&amp;rsquo;t need to understand too much about Java classes as you are only likely to change logger severities when requested by one of the developers.
Some loggers, such as &lt;code&gt;event-logger&lt;/code&gt; do not have a Java class name.&lt;/p&gt;
&lt;p&gt;As an example this is a portion of a Stroom config.yml file to illustrate the different loggers/appenders:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;logging:
  # This is root logging severity level for all loggers. Only messages &amp;gt;= to WARN will be logged unless overridden
  # for a specific logger
  level: WARN

  # All the named loggers
  loggers:
    # Logs useful information about stroom. Only set DEBUG on specific &#39;stroom&#39; classes or packages
    # due to the large volume of logs that would be produced for all of &#39;stroom&#39; in DEBUG.
    stroom: INFO
    # Logs useful information about dropwizard when booting stroom
    io.dropwizard: INFO
    # Logs useful information about the jetty server when booting stroom
    org.eclipse.jetty: INFO
    # Logs REST request/responses with headers/payloads. Set this to OFF to turn disable that logging.
    org.glassfish.jersey.logging.LoggingFeature: INFO
    # Logs summary information about FlyWay database migrations
    org.flywaydb: INFO
    # Logger and custom appender for audit logs
    event-logger:
      level: INFO
      # Prevents messages from this logger from being sent to other appenders
      additive: false
      appenders:
        - type: file
          currentLogFilename: logs/user/user.log
          discardingThreshold: 0
          # Rolled every minute
          archivedLogFilenamePattern: logs/user/user-%d{yyyy-MM-dd&#39;T&#39;HH:mm}.log
          # Minute rolled logs older than a week will be deleted. Note rolled logs are deleted
          # based on the age of the window they contain, not the number of them. This value should be greater
          # than the maximum time stroom is not producing events for.
          archivedFileCount: 10080
          logFormat: &amp;quot;%msg%n&amp;quot;
    # Logger and custom appender for the flyway DB migration SQL output
    org.flywaydb.core.internal.sqlscript:
      level: DEBUG
      additive: false
      appenders:
        - type: file
          currentLogFilename: logs/migration/migration.log
          discardingThreshold: 0
          # Rolled every day
          archivedLogFilenamePattern: logs/migration/migration-%d{yyyy-MM-dd}.log
          archivedFileCount: 10
          logFormat: &amp;quot;%-6level [%d{\&amp;quot;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39;Z&#39;\&amp;quot;,UTC}] [%t] %logger - %X{code} %msg %n&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;appenders&#34;&gt;Appenders&lt;/h4&gt;
&lt;p&gt;The following is an example of the default appenders that will be used for all loggers unless they have their own custom appender configured.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;logging:
  # Appenders for all loggers except for where a logger has a custom appender configured
  appenders:

    # stdout
  - type: console
    # Multi-coloured log format for console output
    logFormat: &amp;quot;%highlight(%-6level) [%d{\&amp;quot;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39;Z&#39;\&amp;quot;,UTC}] [%green(%t)] %cyan(%logger) - %X{code} %msg %n&amp;quot;
    timeZone: UTC
#
    # Minute rolled files for stroom/datafeed, will be curl&#39;d/deleted by stroom-log-sender
  - type: file
    currentLogFilename: logs/app/app.log
    discardingThreshold: 0
    # Rolled and gzipped every minute
    archivedLogFilenamePattern: logs/app/app-%d{yyyy-MM-dd&#39;T&#39;HH:mm}.log.gz
    # One week using minute files
    archivedFileCount: 10080
    logFormat: &amp;quot;%-6level [%d{\&amp;quot;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39;Z&#39;\&amp;quot;,UTC}] [%t] %logger - %X{code} %msg %n&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;log-rolling&#34;&gt;Log Rolling&lt;/h4&gt;
&lt;p&gt;Rolling of log files can be done based on size of file or time.
The &lt;code&gt;archivedLogFilenamePattern&lt;/code&gt; property controls the rolling behaviour.
The rolling policy is determined from the filename pattern, e.g. a pattern with a minute precision date format will be rolled every minute.
The following is an example of an appender that rolls based on the size of the log file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;  - type: file
    currentLogFilename: logs/app.log
    # The name pattern, where i a sequential number indicating age, where 1 is the most recent
    archivedLogFilenamePattern: logs/app-%i.log
    # The maximum number of rolled files to keep
    archivedFileCount: 10
    # The maximum size of a log file
    maxFileSize: &amp;quot;100MB&amp;quot;
    logFormat: &amp;quot;%-6level [%d{\&amp;quot;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39;Z&#39;\&amp;quot;,UTC}] [%t] %logger - %X{code} %msg %n&amp;quot;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The following is an example of an appender that rolls every minute to gzipped files:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;  - type: file
    currentLogFilename: logs/app/app.log
    # Rolled and gzipped every minute
    archivedLogFilenamePattern: logs/app/app-%d{yyyy-MM-dd&#39;T&#39;HH:mm}.log.gz
    # One week using minute files
    archivedFileCount: 10080
    logFormat: &amp;quot;%-6level [%d{\&amp;quot;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39;Z&#39;\&amp;quot;,UTC}] [%t] %logger - %X{code} %msg %n&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;

    &lt;p&gt;Log file rolling is event based, so a file will only roll when a new message arrives that would require a roll to happen.
This means that if the application is idle for a long period with no log output then the un-rolled file will remain active until a new message arrives to trigger it to roll. For example, if Stroom is unused overnight, then the last log message from the night before will not be rolled until a new messages arrive in the morning.&lt;/p&gt;
&lt;p&gt;For this reason, &lt;code&gt;archivedFileCount&lt;/code&gt; should be set to a value that is greater than the maximum time the application may be idle, else rolled log files may be deleted as soon as they are rolled.&lt;/p&gt;


&lt;/div&gt;



      </description>
    </item>
    
    <item>
      <title>Docs: Stroom and Stroom-Proxy Configuration</title>
      <link>/docs/install-guide/configuration/stroom-and-proxy/</link>
      <pubDate>Tue, 11 Jul 2023 00:00:00 +0000</pubDate>
      
      <guid>/docs/install-guide/configuration/stroom-and-proxy/</guid>
      <description>
        
        
        &lt;p&gt;The Stroom and Stroom-Proxy applications are built on the same Dropwizard framework so have a lot of similarities when it comes to configuration.&lt;/p&gt;
&lt;p&gt;The Stroom/Stroom-Proxy applications are essentially just an executable &lt;span class=&#34;external-link&#34;&gt;
  &lt;a href=&#34;https://en.wikipedia.org/wiki/JAR_%28file_format%29&#34; target=&#34;_blank&#34; class=&#34;external-link&#34; title=&#34;JAR (external link to https://en.wikipedia.org/wiki/JAR_%28file_format%29)&#34;&gt;
    &lt;span&gt;JAR&lt;/span&gt;
    &lt;i class=&#34;external-link-icon fas fa-external-link-alt fa-sm text-secondary&#34;&gt;&lt;/i&gt;
  &lt;/a&gt;
&lt;/span&gt;
 file that can be run when provided with a configuration file, &lt;code&gt;config.yml&lt;/code&gt;.
This config file is common to all forms of deployment.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: System Properties</title>
      <link>/docs/howtos/administration/systemproperties/</link>
      <pubDate>Fri, 09 Jul 2021 00:00:00 +0000</pubDate>
      
      <guid>/docs/howtos/administration/systemproperties/</guid>
      <description>
        
        
        &lt;h2 id=&#34;assumptions&#34;&gt;Assumptions&lt;/h2&gt;
&lt;p&gt;The following assumptions are used in this document.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the user successfully logged into Stroom with the appropriate administrative privilege (&lt;strong&gt;Manage Properties&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Certain Stroom &lt;strong&gt;System Properties&lt;/strong&gt; can be edited via the Stroom User Interface.&lt;/p&gt;
&lt;h2 id=&#34;editing-a-system-property&#34;&gt;Editing a System Property&lt;/h2&gt;
&lt;p&gt;To edit a &lt;strong&gt;System Property&lt;/strong&gt; select the &lt;code&gt;Tools&lt;/code&gt; item of the &lt;strong&gt;Main Menu&lt;/strong&gt; and select to bring up the &lt;code&gt;Tools&lt;/code&gt; sub-menu.&lt;/p&gt;







  
  
  
  
  







  



&lt;div class=&#34;card rounded shadow-stroom p-2 td-post-card mb-4 mt-4&#34; style=&#34;width: fit-content;&#34;&gt;

  &lt;a title=&#34;images/HOWTOs/UI-ToolsSubmenu-00.png&#34; href=&#34;../../images/HOWTOs/UI-ToolsSubmenu-00.png&#34;&gt;
    &lt;figure style=&#34;margin-block-end: 0px&#34; &gt;
      
      &lt;img class=&#34;card-img-top&#34; src=&#34;../../images/HOWTOs/UI-ToolsSubmenu-00.png&#34; style=&#34;max-width: fit-content&#34; alt=&#34;images/HOWTOs/UI-ToolsSubmenu-00.png&#34;&gt;
      

      
      &lt;div class=&#34;card-body px-0 pt-2 pb-0&#34;&gt;
        &lt;hr style=&#34;border-top: 1px solid #ddd; margin-top: 0px; margin-bottom:4px;&#34;&gt;
        &lt;figcaption class=&#34;card-text&#34; style=&#34;font-size: smaller; text-align: center;&#34;&gt;Stroom UI Tools sub-menu&lt;/figcaption&gt;
      &lt;/div&gt;
      
    &lt;/figure&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Then move down and select the &lt;code&gt;Properties&lt;/code&gt; sub-item to be presented with &lt;code&gt;System Properties&lt;/code&gt; configuration window as seen below.&lt;/p&gt;







  
  
  
  
  







  



&lt;div class=&#34;card rounded shadow-stroom p-2 td-post-card mb-4 mt-4&#34; style=&#34;width: fit-content;&#34;&gt;

  &lt;a title=&#34;images/HOWTOs/UI-Tools-SystemProperties-00.png&#34; href=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-00.png&#34;&gt;
    &lt;figure style=&#34;margin-block-end: 0px&#34; &gt;
      
      &lt;img class=&#34;card-img-top&#34; src=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-00.png&#34; style=&#34;max-width: fit-content&#34; alt=&#34;images/HOWTOs/UI-Tools-SystemProperties-00.png&#34;&gt;
      

      
      &lt;div class=&#34;card-body px-0 pt-2 pb-0&#34;&gt;
        &lt;hr style=&#34;border-top: 1px solid #ddd; margin-top: 0px; margin-bottom:4px;&#34;&gt;
        &lt;figcaption class=&#34;card-text&#34; style=&#34;font-size: smaller; text-align: center;&#34;&gt;Stroom UI Tools System Properties&lt;/figcaption&gt;
      &lt;/div&gt;
      
    &lt;/figure&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Use the scrollbar to the right of the &lt;strong&gt;System Properties&lt;/strong&gt; configuration window to scroll down to the line where the property one wants to modify is displayed, then select (&lt;em&gt;left click&lt;/em&gt;) the line.
In the example below we have selected the &lt;code&gt;stroom.maxStreamSize&lt;/code&gt; property.&lt;/p&gt;







  
  
  
  
  







  



&lt;div class=&#34;card rounded shadow-stroom p-2 td-post-card mb-4 mt-4&#34; style=&#34;width: fit-content;&#34;&gt;

  &lt;a title=&#34;images/HOWTOs/UI-Tools-SystemProperties-01.png&#34; href=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-01.png&#34;&gt;
    &lt;figure style=&#34;margin-block-end: 0px&#34; &gt;
      
      &lt;img class=&#34;card-img-top&#34; src=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-01.png&#34; style=&#34;max-width: fit-content&#34; alt=&#34;images/HOWTOs/UI-Tools-SystemProperties-01.png&#34;&gt;
      

      
      &lt;div class=&#34;card-body px-0 pt-2 pb-0&#34;&gt;
        &lt;hr style=&#34;border-top: 1px solid #ddd; margin-top: 0px; margin-bottom:4px;&#34;&gt;
        &lt;figcaption class=&#34;card-text&#34; style=&#34;font-size: smaller; text-align: center;&#34;&gt;Stroom UI Tools System Properties - Selected Property&lt;/figcaption&gt;
      &lt;/div&gt;
      
    &lt;/figure&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Now bring up the editing window by &lt;em&gt;double clicking&lt;/em&gt; on the selected line.
At this point we will be presented with the
&lt;code&gt;Application Property - stroom.maxStreamSize&lt;/code&gt; editing window.&lt;/p&gt;







  
  
  
  
  







  



&lt;div class=&#34;card rounded shadow-stroom p-2 td-post-card mb-4 mt-4&#34; style=&#34;width: fit-content;&#34;&gt;

  &lt;a title=&#34;images/HOWTOs/UI-Tools-SystemProperties-02.png&#34; href=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-02.png&#34;&gt;
    &lt;figure style=&#34;margin-block-end: 0px&#34; &gt;
      
      &lt;img class=&#34;card-img-top&#34; src=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-02.png&#34; style=&#34;max-width: fit-content&#34; alt=&#34;images/HOWTOs/UI-Tools-SystemProperties-02.png&#34;&gt;
      

      
      &lt;div class=&#34;card-body px-0 pt-2 pb-0&#34;&gt;
        &lt;hr style=&#34;border-top: 1px solid #ddd; margin-top: 0px; margin-bottom:4px;&#34;&gt;
        &lt;figcaption class=&#34;card-text&#34; style=&#34;font-size: smaller; text-align: center;&#34;&gt;Stroom UI Tools System Properties - Editing Property&lt;/figcaption&gt;
      &lt;/div&gt;
      
    &lt;/figure&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Now edit the property, by &lt;em&gt;double clicking&lt;/em&gt; the string in the &lt;code&gt;Value&lt;/code&gt; entry box.
In this case we select the &lt;code&gt;1G&lt;/code&gt; value to see&lt;/p&gt;







  
  
  
  
  







  



&lt;div class=&#34;card rounded shadow-stroom p-2 td-post-card mb-4 mt-4&#34; style=&#34;width: fit-content;&#34;&gt;

  &lt;a title=&#34;images/HOWTOs/UI-Tools-SystemProperties-03.png&#34; href=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-03.png&#34;&gt;
    &lt;figure style=&#34;margin-block-end: 0px&#34; &gt;
      
      &lt;img class=&#34;card-img-top&#34; src=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-03.png&#34; style=&#34;max-width: fit-content&#34; alt=&#34;images/HOWTOs/UI-Tools-SystemProperties-03.png&#34;&gt;
      

      
      &lt;div class=&#34;card-body px-0 pt-2 pb-0&#34;&gt;
        &lt;hr style=&#34;border-top: 1px solid #ddd; margin-top: 0px; margin-bottom:4px;&#34;&gt;
        &lt;figcaption class=&#34;card-text&#34; style=&#34;font-size: smaller; text-align: center;&#34;&gt;Stroom UI Tools System Properties - Editing Property - Value selected&lt;/figcaption&gt;
      &lt;/div&gt;
      
    &lt;/figure&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Now change the selected &lt;code&gt;1G&lt;/code&gt; value to the value we want.
In this example, we are changing the value to &lt;code&gt;512M&lt;/code&gt;.&lt;/p&gt;







  
  
  
  
  







  



&lt;div class=&#34;card rounded shadow-stroom p-2 td-post-card mb-4 mt-4&#34; style=&#34;width: fit-content;&#34;&gt;

  &lt;a title=&#34;images/HOWTOs/UI-Tools-SystemProperties-04.png&#34; href=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-04.png&#34;&gt;
    &lt;figure style=&#34;margin-block-end: 0px&#34; &gt;
      
      &lt;img class=&#34;card-img-top&#34; src=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-04.png&#34; style=&#34;max-width: fit-content&#34; alt=&#34;images/HOWTOs/UI-Tools-SystemProperties-04.png&#34;&gt;
      

      
      &lt;div class=&#34;card-body px-0 pt-2 pb-0&#34;&gt;
        &lt;hr style=&#34;border-top: 1px solid #ddd; margin-top: 0px; margin-bottom:4px;&#34;&gt;
        &lt;figcaption class=&#34;card-text&#34; style=&#34;font-size: smaller; text-align: center;&#34;&gt;Stroom UI Tools System Properties - Editing Property - Value changed&lt;/figcaption&gt;
      &lt;/div&gt;
      
    &lt;/figure&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;At this point, press the 






  
  
  


&lt;span class=&#34;stroom-theme-dark stroom-button stroom-button-primary&#34; title=&#34;OK button&#34; &gt;
  &lt;span class=&#34;stroom-icon inline-svg-button icon-button  icon-colour__grey&#34; &gt;
    &lt;span class=&#34;face&#34; title=&#34;OK&#34;&gt;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path style=&#34;fill:#fff&#34; d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt; &lt;/span&gt;
  &lt;/span&gt;
  &lt;span class=&#34;stroom-button-text&#34;&gt;OK&lt;/span&gt;
&lt;/span&gt;
 to see the new value updated in the &lt;strong&gt;System Properties&lt;/strong&gt; configuration window.&lt;/p&gt;







  
  
  
  
  







  



&lt;div class=&#34;card rounded shadow-stroom p-2 td-post-card mb-4 mt-4&#34; style=&#34;width: fit-content;&#34;&gt;

  &lt;a title=&#34;images/HOWTOs/UI-Tools-SystemProperties-05.png&#34; href=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-05.png&#34;&gt;
    &lt;figure style=&#34;margin-block-end: 0px&#34; &gt;
      
      &lt;img class=&#34;card-img-top&#34; src=&#34;../../images/HOWTOs/UI-Tools-SystemProperties-05.png&#34; style=&#34;max-width: fit-content&#34; alt=&#34;images/HOWTOs/UI-Tools-SystemProperties-05.png&#34;&gt;
      

      
      &lt;div class=&#34;card-body px-0 pt-2 pb-0&#34;&gt;
        &lt;hr style=&#34;border-top: 1px solid #ddd; margin-top: 0px; margin-bottom:4px;&#34;&gt;
        &lt;figcaption class=&#34;card-text&#34; style=&#34;font-size: smaller; text-align: center;&#34;&gt;Stroom UI Tools System Properties - Value changed&lt;/figcaption&gt;
      &lt;/div&gt;
      
    &lt;/figure&gt;
  &lt;/a&gt;
&lt;/div&gt;


      </description>
    </item>
    
  </channel>
</rss>
