Skip to main content
Pentaho Documentation

Merge Custom BA Configuration Files

Overview

If you have customized any of these files, you will have to manually merge them in order to successfully complete the upgrade. We recommend that you make backups of each of these files before altering them.

A number of configuration files have changed between Pentaho 5.0 and Pentaho 5.1. Instructions for the specific merging changes for all of the appropriate configuration files are in the following sections. 

If you have customized any of these files, you will have to manually merge them in order to successfully complete the upgrade. We recommend that you make backups of each of these files before altering them.

These are the files that you have in /server-old directory.  We recommend copying any of these files that you have customized into a separate folder, merging them using these instructions, then placing them in the appropriate location in your 5.1 instance.

Merging Tool and Misc. Configuration Files

There are several tool and misc. configuration files that, if you have customized them, will need to be updated in order to make the jump from 5.0.6 to 5.1.

Edit Analyzer configuration file

Merge your Analyzer configuration files by following these steps.

  1. Navigate to the pentaho-solutions/system/analyzer directory and open the plugin.xml file with a text editor.
  2. Locate the tags for the <overlays></overlays> and copy this text between them.
    <overlay id="launch" resourcebundle="content/analyzer/resources/messages" priority="1">
        <button id="analyzer" label="${openNewAnalyzerReport}" command="Home.openFile('${tabName}','${tabName}','api/repos/xanalyzer/service/selectSchema');$('#btnCreateNew').popover('hide')"/>
    </overlay>
    
  3. Add this new property any where within the analyzer.properties file.
    report.field.list.view=cmdViewCategory
    
  4. Save and close the file.

Edit Dashboard configuration file

Your Dashboard configurations can be merged by following these steps.

  1. Navigate to the /pentaho-solutions/system/dashboards directory and open the plugin.xml file with a text editor.
  2. Locate the tags for the <overlays></overlays> and copy this text between them.
    <overlay id="launch" resourcebundle="api/repos/dashboards/resources/messages/messages" priority="3">
    <button id="dashboard" label="${openNewDashboard}" command="Home.openFile('${tabName}','${tabName}','api/repos/dashboards/editor');$('#btnCreateNew').popover('hide')"/>
    </overlay>
    
  3. Save and close the plugin.xml file.

Edit Data-Access configuration file

Merge your data-access configuration files by following these steps.

  1. Navigate to the /pentaho-solutions/system/data-access directory and open the settings.xml file with a text editor.
  2. Add this setting anywhere within the settings.xml file.
    <agile-mart-staging-datasource>AgileBI</agile-mart-staging-datasource>
    
  3. Save and close the settings.xml file.

MySQL Only: Edit Jackrabbit configuration file

If you are using MySQL for your repository, you will need to add a new property in two of the tags in the repository.xml file. Note that both tags are commented out by default and are actually duplicates of each other. The new property to be added is bolded below.

  1. Navigate to the /pentaho-solutions/system/jackrabbit directory and open the repository.xml file with a text editor.
  2. Locate the PersistenceManager class tags for MySQL and add the driver parameter in both places.
    <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
    <param name="driver" value="com.mysql.jdbc.Driver"/>  
    
  3. Save and close the repository.xml file.

Edit Mondrian configuration file

Your Mondrian configuration can be merged by following these steps.

  1. Navigate to the /pentaho-solutions/system/mondrian directory and open the mondrian.properties file with a text editor.
  2. Add these properties anywhere within the mondrian.properties file.
    mondrian.rolap.maxQueryThreads=20 
    
  3. Locate the mondrian.native.filter.enable property and change the value to false.
    mondrian.native.filter.enable=false
    
  4. Save and close the mondrian.properties file.

Edit Pentaho-CDF configuration file

These steps guide you through the process of merging your Pentaho-CDF configuration file.

  1. Navigate to the /pentaho-solutions/system/pentaho-cdf directory and open the plugin.xml file with a text editor.
  2. Locate the tags for the <static-paths></static-paths> and add this text between them.
    <static-path url="/pentaho-cdf/css" localFolder="css"/>   
    
  3. Find and delete this bean.
    <meta-provider>org.pentaho.cdf.CdfFileInfoGenerator</meta-provider>
    
  4. Locate the tag </plugin> and add this text right above it.
    <content-generator id="pentaho-cdf" type="xcdf" title="CDF Display Handler" class="org.pentaho.cdf.CdfContentGenerator"/>
    
  5. Save and close the plugin.xml file.

Edit Pentaho Interactive Reporting configuration file

Your Interactive Reporting configurations can be merged by following these steps..

  1. Navigate to the /pentaho-solutions/system/interactive-reporting directory and open the plugin.xml file with a text editor.
  2. Locate the tags for the <overlays></overlays> and copy this text between them.
    <overlay id="launch" resourcebundle="content/pentaho-interactive­reporting/resources/messages/launchermessages" priority="2">
    <button id="interactiveReport" label="${interactiveReportLabel}" command="Home.openFile('${tabName}','${tabName}','api/repos/pentaho‐interactive-reporting/prpti.new');$('#btnCreateNew').popover('hide')"/>
    </overlay>
    
  3. Save and close the plugin.xml file.

Edit Reporting configuration file

Merge your reporting configuration files by following these steps..

  1. Navigate to the /pentaho-solutions/system/reporting directory and open the plugin.spring.xml file with a text editor.
  2. Locate the </beans> tag and add these two new beans right before it.
    <bean id="org.pentaho.reporting.platform.plugin.output.ReportOutputHandlerFactory" class="org.pentaho.reporting.platform.plugin.output.FastExportReportOutputHandlerFactory" scope="prototype"/>
    <bean id="org.pentaho.reporting.platform.plugin.cache.ReportCache" class="org.pentaho.reporting.platform.plugin.cache.NullReportCache" scope="prototype"/>  
    
  3. Save and close the plugin.spring.xml file.

Edit web.xml configuration file

There are a few different things that you will need to add to the web.xml for your upgrade: a new filter definition, new filter mapping, a new listener, and a new security role. Some listeners are not present by default: securitysystemlistener, loaddriverslistener, olap4jsystemlistener.

  1. Navigate to the /tomcat/webapps/pentaho/WEB-INF directory and open the web.xml file with a text editor.
  2. Add a new filter definition by finding the existing <filter> entries and adding this entry.
    <filter>
        <filter-name>Pentaho Path Decoding Filter</filter-name>
        <filter-class>org.pentaho.platform.web.http.filters.PentahoPathDecodingFilter</filter-class>
    </filter>
    
  3. Add new filter mapping by finding the <filter-mapping> entries and adding this entry after them.
    <filter-mapping>
        <filter-name>Pentaho Path Decoding Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  4. Add a new listener by finding the <listener> entries and adding this entry after them.
    <listener>
      <listener-class>org.pentaho.platform.web.http.context.PentahoSystemReadyListener</listener-class>
    </listener>
    
  5. Add a new security role by locating the <error-page> entries and adding this entry before them.
    <security-role>
         <description>Non-Existent Role - this prevents direct access to JSPs</description>
         <role-name>PENTAHO_ADMIN</role-name>
    </security-role>
    
  6. Save and close the web.xml file.

Edit ehcache.xml file

There is a new node that you will need to add to the ehcache.xml file.

  1. Navigate to the /tomcat/webapps/pentaho/WEB-INF/classes directory and open the ehcache.xml file with a text editor.
  2. Add this new node anywhere within <ehcache></ehcache> tags.
    <cache
          name="userRoleListCache"
          maxEntriesLocalHeap="2000"
          eternal="false"
          overflowToDisk="false"
          timeToIdleSeconds="300"
          timeToLiveSeconds="600"
          diskPersistent="false"/>
    
  3. Save and close the file.

Merging Configuration Files

These configuration files have changed for version 5.1. All of these files are located in the pentaho-solutions/system directory. These sections contain instructions for the changes that you need to make to each individual file.

applicationContext-­pentaho-­security‐jdbc.xml

For 5.1, the ExtraRolesUserRoleListServiceDecorator bean has been split into two.

  1. Open the applicationContext-­pentaho-­security‐jdbc.xml file with a text editor.
  2. Replace the old userRoleListService bean definition with the two new beans as shown below.
    Old Bean:
    <property name="userRoleListService" ref="jdbcUserRoleListService" />
    <property name="extraRoles" ref="extraRoles" />
    ...
    </bean>
    
    New Beans:
    <bean id="extraRoleJdbcUserRoleListService" class="org.pentaho.platform.plugin.services.security.userrole.ExtraRolesUserRoleListServiceDecorator">
        <property name="userRoleListService" ref="jdbcUserRoleListService" />
        <property name="extraRoles" ref="extraRoles" />
    </bean>
    
    <bean class="org.pentaho.platform.plugin.services.security.userrole.CachingUserRoleListServiceDecorator">
        <constructor-arg ref="extraRoleJdbcUserRoleListService" />
        <pen:publish as-type="INTERFACES">
            <pen:attributes>
            <pen:attr key="providerName" value="jdbc"/>
            </pen:attributes>
        </pen:publish>
    </bean>
    
  3. Save and close the file.

applicationContext-­spring-security-ldap.xml

A new tag is added to the ldapRoleMapper bean.

  1. Open the applicationContext-­spring-security-ldap.xml file with a text editor.
  2. Replace the old ldapRoleMapper bean definition with the new bean as shown below.
    Old Bean:<bean id="ldapRoleMapper"
    <bean id="ldapRoleMapper" class="org.pentaho.platform.engine.security.DefaultLdapRoleMapper">
         <constructor-arg>
             <ref local="ldapRoleMap"/>
         </constructor-arg>
    </bean>
    
    New Bean:
    <bean id="ldapRoleMapper" class="org.pentaho.platform.engine.security.DefaultLdapRoleMapper">
        <constructor-arg>
            <ref local="ldapRoleMap"/>
        </constructor-arg>
        <constructor-arg value="${ldap.allAuthoritiesSearch.roleAttribute}"/>
    </bean>
    
  3. Save and close the file.

applicationContext-­spring-security.xml

A new attribute needs to be added on the root <beans> tag.

  1. Open the applicationContext-­spring-security.xml file with a text editor.
  2. Add the following to the top-level <beans> tag.
    default-lazy-init="true"
    
  3. These two URL Access Definitions have changed in 5.1.
    1. The objectDefinitionSource property in the filterInvocationInterceptor bean has changed. Any customizations made to Role names in this property will have to be recreated in 5.1. Please compare your current value with the latest and merge your changes.
      <property name="objectDefinitionSource">
      <value>
      <!--­
      Note-the "=Nobody" below is saying that resource URLs with those
      patterns will not be available through a web call.
      --­>
      <![CDATA[
      CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
      \A/content/common-ui/resources/web/(.+/)*.+\.js.*\Z=Anonymous,Authenticated
      \A/.*require-cfg.js.*\Z=Anonymous,Authenticated
      \A/.*require-js-cfg.js.*\Z=Anonymous,Authenticated
      \A/content/common-ui/resources/web/require.js.*\Z=Anonymous,Authenticated
      \A/content/common-ui/resources/web/require-cfg.js.*\Z=Anonymous,Authenticated
      \A/content/data-access/resources/gwt/.*css\Z=Anonymous,Authenticated
      \A/webcontext.js.*\Z=Anonymous,Authenticated
      ....
      
    2. The objectDefinitionSource property in the filterInvocationInterceptorForWS bean has the following change. If you have customized Role access to URLs in this property, you will have to do so with this addition.
      Old Bean:
      <property name="objectDefinitionSource">
      <value>
      ...
      \A/api/.*require-­js-­cfg.js\Z=Anonymous,Authenticated
      
      New Bean:
      <property name="objectDefinitionSource">
      <value>
      ...
      \A/api/.*require-cfg.js.*\Z=Anonymous,Authenticated
      \A/api/.*require-­js-­cfg.js.*\Z=Anonymous,Authenticated
      \A/content/common-ui/resources/web/angular-directives/angular-directives.css\Z=Anonymous,Authenticated
      
  4. Save and close the file.

pentaho-spring-beans.xml

An import is added for olap4j.

  1. Open the pentaho-spring-beans.xml file with a text editor.
  2. Add this <import resource> before the closing </beans> tag.
    <import resource="olap4j.spring.xml"/>
    
  3. Save and close the file.

pentaho.xml

Update the documentation node value in the pentaho.xml file.

  1. Open the pentaho.xml file with a text editor.
  2. Locate the tag for the <documentation-url> and replace the old one with the new one.

    Old Node Value:

    <documentation-url>docs/InformationMap.html</documentation-url>
    
    New Node Value:
    <documentation-url>docs/InformationMap.jsp</documentation-url>
    
  3. Save and close the file.

pentahoObjects.spring.xml

A number of beans have changed in the pentahoObjects.spring.xml.

  1. Open the pentahoObjects.spring.xml file with a text editor.
  2. Find the bean for IScheduler2 and replace the old bean definition with the new bean as shown.
    Old Bean:
    <bean id="IScheduler2" class="org.pentaho.platform.scheduler2.quartz.QuartzScheduler"
    scope="singleton"/>
    
    New Bean:
    <bean id="IScheduler2" class="org.pentaho.platform.scheduler2.quartz.QuartzScheduler"
    scope="singleton">
        <pen:publish as-­type="INTERFACES">
          <pen:attributes>
              <pen:attr key="priority" value="50"/>
          </pen:attributes>
        </pen:publish>
    </bean>
    
  3. Find the bean for IDBDatasourceService and replace the old bean definition with the three new beans as shown.
    Old Bean:
    <bean id="IDBDatasourceService"
    class="org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledOrJndiDatasourceService"" scope="singleton"/>
    
    New Beans:
    <bean id="pooledOrJndiDatasourceService" class="org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledOrJndiDatasourceService" scope="singleton" />
    <bean id="nonPooledOrJndiDatasourceService"
    class="org.pentaho.platform.engine.services.connection.datasource.dbcp.NonPooledOrJndiDatasourceService" scope="singleton" />
    <bean id="IDBDatasourceService"
    class="org.pentaho.platform.engine.services.connection.datasource.dbcp.DynamicallyPooledOrJndiDatasourceService" scope="singleton">
    <property name="pooledDatasourceService" ref="pooledOrJndiDatasourceService" />
    <property name="nonPooledDatasourceService" ref="nonPooledOrJndiDatasourceService" />
    </bean>
    
  4. Find the bean for IUserRoleListService and replace the old bean definition with the three new beans as shown.
    Old Bean:
    <pen:bean id="IUserRoleListService" class="org.pentaho.platform.api.engine.IUserRoleListService">
        ...
    </pen:bean>
    
    New Beans:
    <pen:bean id="activeUserRoleListService" class="org.pentaho.platform.api.engine.IUserRoleListService">
        <pen:attributes>
          <pen:attr key="providerName" value="${security.provider}"/>
        </pen:attributes>
    </pen:bean>
    
    <!--The system must have access to the jackrabbit version even if another is configured.-->
    <pen:bean id="systemUserRoleListService" class="org.pentaho.platform.api.engine.IUserRoleListService">
        <pen:attributes>
          <pen:attr key="providerName" value="jackrabbit"/>
        </pen:attributes>
    </pen:bean>
    
    <!--A composite bean composed of the activeUserRoleListService and systemUserRoleListService-->
    <bean id="IUserRoleListService" class="org.pentaho.platform.plugin.services.security.userrole.CompositeUserRoleListService">
        <constructor-arg>
            <list>
                <ref bean="activeUserRoleListService"/>
                <ref bean="systemUserRoleListService"/>
            </list>
        </constructor-arg>
        <pen:publish as-type="INTERFACES">
            <pen:attributes>
                <pen:attr key="priority" value="50"/>
            </pen:attributes>
        </pen:publish>
    </bean> 
    
  5. Find the bean for UserDetailsService and replace the old bean definition with the three new beans as shown.
    Old Bean:
    <pen:bean id="UserDetailsService" class="org.springframework.security.userdetails.UserDetailsService">
        ...
    </pen:bean>   
    
    New Beans:
    <pen:bean id="activeUserDetailsService" class="org.springframework.security.userdetails.UserDetailsService">
        <pen:attributes>
          <pen:attr key="providerName" value="${security.provider}"/>
        </pen:attributes>
    </pen:bean>
    
    <!--­The system must have access to the jackrabbit version even if another is configured.-->
    <pen:bean id="systemUserDetailsService" class="org.springframework.security.userdetails.UserDetailsService">
        <pen:attributes>
          <pen:attr  key="providerName" value="jackrabbit"/>
        </pen:attributes>
    </pen:bean>
    
    <!--­A composite bean composed of the activeUserDetailsService and systemUserDetailsService-->
    <bean id="UserDetailsService" class="org.pentaho.platform.plugin.services.security.userrole.ChainedUserDetailsService">
        <constructor-arg>
            <list>
              <ref bean="activeUserDetailsService"/>
              <ref bean="systemUserDetailsService"/>
            </list>
        </constructor-arg>
    </bean>   
    
  6. These new beans can be added anywhere within the <beans></beans> tags.
    New Bean:
    <pen:bean class="org.springframework.security.providers.AuthenticationProvider">
        <pen:attributes>
          <pen:attr key="providerName" value="${security.provider}"/>
        </pen:attributes>
    
    <pen:bean class="org.springframework.security.providers.AuthenticationProvider">
        <pen:attributes>
          <pen:attr key="providerName" value="${security.provider}"/>
        </pen:attributes>
        <pen:publish as-type="ALL">
          <pen:attributes>
            <pen:attr key="priority" value="50"/>
          </pen:attributes>
        </pen:publish>
    </pen:bean>
    
    <bean id="IOlapService" class="org.pentaho.platform.plugin.action.olap.impl.OlapServiceImpl" scope="singleton">
        <pen:publish as-type="org.pentaho.platform.plugin.action.olap.IOlapService"/>
        <!-­-Allows to override some properties form each connection before they are established.-->
        <!--­property name="connectionFilters">
            <list>
              <bean class="org.pentaho.platform.plugin.action.olap.IOlapConnectionFilter"/>
            </list>
        </property-­>
        <!--­Allows to specify a custom class to use as a role implementation for hosted mondrian connections.-->
        <!--­property name="mondrianRole">
          <bean class="mondrian.olap.RoleImpl"/>
        </property-­->
    </bean>
    
    <bean id="jdbcDriverTranslationMap" class="java.util.HashMap">
        <pen:publish as-type="ALL"/>
        <constructor-arg index="0" type="java.util.Map">
          <map key--type="java.lang.String" value-­‐type="java.lang.String">
        <entry key="mondrian4" value="mondrian"/>
          </map>
        </constructor-arg>
    </bean>    
    
  7. Save and close the file.

pentahoServices.spring.xml

Update beans for the org.pentaho.platform.web.http.api.resources in the pentahoServices.spring.xml file.

  1. Open the pentahoServices.spring.xml file with a text editor.
  2. Find the bean for UserRoleDaoResource and replace the old bean definition with the new bean as shown.

    Old Bean:

    <bean class="org.pentaho.platform.web.http.api.resources.UserRoleDaoResource" scope="request">
        ...
    </bean> 
    
    New Bean:
    <bean class="org.pentaho.platform.web.http.api.resources.UserRoleDaoResource" scope="request">
        <constructor-arg>
          <pen:bean class="org.pentaho.platform.security.policy.rolebased.IRoleAuthorizationPolicyRoleBindingDao"/>
        </constructor-arg>
    <constructor-arg>
    <pen:bean class="org.pentaho.platform.api.mt.ITenantManager"/>
    </constructor-arg>
        <constructor-arg>
           <pen:bean class="java.util.List">
             <pen:attributes>
            <pen:attr key="id" value="singleTenantSystemAuthorities"/>            
             </pen:attributes>
        </constructor-arg>
        <constructor-arg>
           <pen:bean class="java.lang.String">
             <pen:attributes>
            <pen:attr key="id" value="singleTenantAdminAuthorityName"/>
             </pen:attributes>
           </pen:bean>
        </constructor-arg>
    </bean> 
    
  3. Find the bean for UserRoleListResource and replace the old bean definition with the new bean as shown.

    Old Bean:

    <bean class="org.pentaho.platform.web.http.api.resources.UserRoleListResource" scope="request">
       ...
    </bean>  
    
    New Bean:
    <bean class="org.pentaho.platform.web.http.api.resources.UserRoleListResource" scope="request">
        <constructor-arg>
          <pen:bean class="java.util.List">
          <pen:attributes>
            <pen:attr key="id" value="singleTenantSystemAuthorities"/>
          </pen:attributes>
          </pen:bean>
        </constructor-arg>
        <constructor-arg>
          <pen:bean class="java.lang.String">
           <pen:attributes>
            <pen:attr key="id" value="singleTenantAdminAuthorityName"/>
           </pen:attributes>
           </pen:bean>
        </constructor-arg>
        <constructor-arg>
           <pen:bean class="java.lang.String">
           <pen:attributes>
             <pen:attr key="id" value="singleTenantAnonymousAuthorityName"/>
           </pen:attributes>
           </pen:bean>
        </constructor-arg>
        <constructor-arg>
           <pen:bean class="java.util.list">
           <pen:attributes>
             <pen:attr key="id" value="extraSystemAuthorities"/>
           </pen:attributes>
           </pen:bean>
        </constructor-arg>
    </bean>  
    
  4. Find the bean for FileResource and replace the old bean definition with the new bean as shown.

    Old Bean:

    <bean class="org.pentaho.platform.web.http.api.resources.FileResource" scope="request">
        <property name="whitelist" ref="downloadWhitelist" />
    </bean>  
    
    New Bean:
    <bean class="org.pentaho.platform.web.http.api.resources.FileResource" scope="request">
        <property name="whitelist"><pen:bean class="org.pentaho.platform.repository.RepositoryDownloadWhitelist" />
        </property>    
    </bean>  
    
  5. Find the bean for RepositoryResource and replace the old bean definition with the new bean as shown.

    Old Bean:

    <bean class="org.pentaho.platform.web.http.api.resources.RepositoryResource" scope="request">
        <property name="whitelist" ref="downloadWhitelist" />
    </bean>  
    
    New Bean:
    <bean class="org.pentaho.platform.web.http.api.resources.RepositoryResource" scope="request">
        <property name="whitelist"><pen:bean class="org.pentaho.platform.repository.RepositoryDownloadWhitelist" />
        </property>
    </bean>  
    
  6. Find the bean for AuthorizationActionResource and replace the old bean definition with the new bean as shown.

    Old Bean:

    <bean class="org.pentaho.platform.web.http.api.resources.AuthorizationActionResource"
    scope="request"/>  
    
    New Bean:
    <bean class="org.pentaho.platform.web.http.api.resources.AuthorizationActionResource" scope="request">
        <constructor-­arg>
        <pen:list class="org.pentaho.platform.api.engine.IAuthorizationAction"/>
        </constructor-­arg>
    </bean>  
    
  7. Add this new bean anywhere between the <beans></beans> tags.

    Add Bean:

    <bean class="org.pentaho.platform.web.http.api.resources.PasswordResource" scope="request"/>
    
  8. Save and close the file.

repository.spring.properties

Add two new properties to the repository.spring.properties file.

  1. Open the repository.spring.properties file with a text editor.
  2. Add these two properties to the file.
    cache-size=100
    cache-ttl=300
    
  3. Save and close the file.

repository.spring.xml

There are a number of changes that you will need to make to the repository.spring.xml file in order to merge your configurations.

  1. Open the repository.spring.xml file with a text editor.
  2. Search for all instances of lockHelper and replace it with ILockHelper except leave the class shown here as is.
     <bean id="ILockHelper" class="org.pentaho.platform.repository2.unified.jcr.DefaultLockHelper">
    
  3. Locate these three beans and add the new tag to all three:
    • ITenantManager
    • ILockHelper
    • roleAuthorizationPolicyRoleBindingDao
    New Tag:
    <pen:publish as-type="INTERFACES"/>
    
  4. Locate these beans and add the new child tag to all of them:
    • repositoryAdminUsername
    • jcrPreAuthenticationToken
    • singleTenantAuthenticatedAuthorityName
    • singleTenantAdminAuthorityName
    • singleTenantAnonymousAuthorityName
    • superAdminAuthorityName
    • superAdminUserName
    • systemTenantAdminUserName
    • systemTenantAdminPassword
    • singleTenantAdminUserName
    New Tag:
    <pen:publish as-type="CLASSES"/>
    
  5. Find the util:list bean for singleTenantSystemAuthorities and replace the old bean definition with the new bean as shown.
    Old Bean:
    <util:list id="singleTenantSystemAuthorities" list-class="java.util.ArrayList" value-type="java.lang.String">
    ... 
    </util:list>
    
    New Bean:
    <bean class="java.util.ArrayList" id="singleTenantSystemAuthorities">
         <constructor-arg>
          <util:list list-class="java.util.ArrayList" value-type="java.lang.String">
            <ref bean="singleTenantAuthenticatedAuthorityName" />
            <ref bean="singleTenantAdminAuthorityName" />
            <ref bean="singleTenantAnonymousAuthorityName" />
          </util:list>
         </constructor-arg>
         <pen:publish as-type="INTERFACES"/>
    </bean>
    
  6. Find the util:list bean for extraSystemAuthorities and replace the old bean definition with the new bean as shown.
    Old Bean:
    <util:list id="extraSystemAuthorities" list-class="java.util.ArrayList" value-type="java.lang.String">
        ...
      </util:list>
    
    New Bean:
    <bean class="java.util.ArrayList" id="extraSystemAuthorities">
         <constructor-arg>
          <util:list list-class="java.util.ArrayList" value-type="java.lang.String">
            <ref bean="singleTenantAuthenticatedAuthorityName" />
            <ref bean="singleTenantAnonymousAuthorityName" />
          </util:list>
         </constructor-arg>
         <pen:publish as-type="INTERFACES"/>
      </bean>
    
  7. Find the bean for jcrSessionFactory and add this new property right before the </bean> tag.
    New Property:
    <property name="sessionFactory">
          <bean class="org.pentaho.platform.repository2.unified.jcr.sejcr.GuavaCachePoolPentahoJcrSessionFactory">
            <constructor-arg ref="jcrRepository"/>
            <constructor-arg><null/></constructor-arg>
          </bean>
    </property>
    
  8. Find the bean with the id roleAuthorizationPolicyRoleBindingDaoTarget and remove the <constructor-arg> tags as shown.
    Old:
    <constructor-arg ref="jcrTemplate"/>
        <constructor-arg>
          <null/>
        </constructor-arg>
    <constructor-arg ref="immutableRoleBindingMap"/>
    
    New:
    <constructor-arg ref="jcrTemplate"/>
    <constructor-arg ref="immutableRoleBindingMap"/>
    
  9. Find the bean for jcrAdminSessionFactory and add this new property right before the </bean> tag.
    New Property:
    <property name="sessionFactory">
          <bean class="org.pentaho.platform.repository2.unified.jcr.sejcr.GuavaCachePoolPentahoJcrSessionFactory">
            <constructor-arg ref="jcrRepository"/>
            <constructor-arg><null/></constructor-arg>
          </bean>
    </property> 
    
  10. Add these new beans right before the </beans> tag.
    New Beans:
    <bean id="executePermissionRepositoryLifecycleManager" class="org.pentaho.platform.repository2.unified.lifecycle.ExecutePermissionRepositoryLifecycleManager">
        <constructor-arg ref="roleAuthorizationPolicyRoleBindingDaoTxn" />
        <constructor-arg ref="jcrTransactionTemplate"/>
        <constructor-arg ref="adminJcrTemplate"/>
        <constructor-arg ref="pathConversionHelper"/>
    <property name="rolesNeedingExecutePermission">
      <util:list>
        <ref bean="singleTenantAuthenticatedAuthorityName"/>
        <ref bean="executePermissionRepositoryLifecycleManager"/>
        <value>Power User</value>
      </util:list>
    </property>
    </bean>
    <bean id="RepositoryFileProxyFactory" class="org.pentaho.platform.repository2.unified.jcr.RepositoryFileProxyFactory">
        <constructor-arg ref="jcrTemplate"/>
        <constructor-arg ref="repositoryFileDao"/>
    </bean>
    
  11. Save and close the file.
 

systemListeners.xml

This file has undergone an extensive reordering in 5.1.  You will need to add beans and reorder them in the systemListeners.xml file.

  1. Open the systemListeners.xml file and add the SecuritySystemListener, LoadDriversListener, and olap4jSystemListener beans as shown.
    <bean class="org.pentaho.platform.plugin.services.security.userrole.SecuritySystemListener"/>
    <bean id="loadDriversListener" class="org.pentaho.commons.system.LoadDriversListener" />
    <bean id = "olap4jSystemListener" class="org.pentaho.platform.plugin.action.olap.Olap4jSystemListener">
    
  2. Find the bean for pooledDataSourceSystemListener and replace the old bean with the new bean as shown.

    Old Bean:

    <bean id="pooledDataSourceSystemListener"
    class="org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledDatasourceSystemListener" />
    

    New Bean:

    <bean id="dynamicallyPooledDataSourceSystemListener" class="org.pentaho.platform.engine.services.connection.datasource.dbcp.DynamicallyPooledDatasourceSystemListener" />
    
  1. Add the following bean directly after the kettleSystemListener.
    <bean id="osgiListener" class="org.pentaho.platform.osgi.OSGIBoot"/>
    
  2. Reorder your beans so that your merged result looks like the following. If your custom system listener is required to generate content, make sure that it is added before the quartzSystemListener. Otherwise, place your custom listeners at the end of the list.
    • kettleSystemListener
    • osgiListener (new)
    • pluginSystemListener
    • SecuritySystemListener
    • backingRepositoryLifecycleManagerSystemListener
    • jfreeReportSystemListener
    • mondrianSystemListener
    • dynamicallyPooledDataSourceSystemListener (this replaces an older bean)
    • chartingSystemListener
    • loadDriversListener
    • olap4jSystemListener
    • quartzSystemListener
    • auditReportingSystemListener
    • versionCheckerSystemListener
    • defaultContentSystemListener
  3. Save and close the file.