Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 75 Next »

Project

Clone or download the source code from https://stash.uconn.edu/projects/KFS/repos/uconn-kfs.

Build

This version of KFS uses Apache Maven rather than Ant to build the application. 

See https://maven.apache.org  for more information. To download Maven go to https://maven.apache.org/download.cgi

Jenkins

Jenkins uses the following Maven build command line

clean package -DskipTests=true -Dtarget.environment=ups -Dtarget.url=<server url>-Dbuild.number=${BUILD_NUMBER}.  

The value of the -Dtarget.url parameter <server url> is the URL of the appropiate KFS enviornment, non-production target.url is https://kualinp.uconn.edu where production would be https://kuali.uconn.edu/.

Jenkins assigns the value for -Dbuild.number in the BUILD_NUMBER variable.

Local

Use the following maven command to build KFS in your local environment

mvn  clean  package -DskipTests=true -Dtarget.environment=updev -Dtarget.url=http://localhost:8080 -Dbuild.number=17.2 (any value for -Dbuild.number is acceptible).

Database

Upgrade files are located in the  /uconn/upgrade-kfs7/db directory tree of the uconn-kfs project. This directory contains the liquibase-core-3.4.1.jar file as well as kfs and rice subdirectories.  Copy the entire db directory structure  to a server that can connect to the database servers. It is necessary to run the rice database scripts first as some kfs tables pull data from the rice schema.

/rice

  1. Update liquibase.properties file with appropriate url, username and password

  2. Run rice-runlog.sh to use liquibase to perform the updates.

/kfs

  1. Update liquibase.properties file with appropriate url, user and password

  2. Replace [env] in kfs/core/core-services-cf.sql and kfs/kfs-additional.xml with appropriate environment (prd for production)
  3. Run kfs-runlog.sh to use liquibase to perform the updates.

Server Configuration

Add -Dadditional.kfs.config.locations="/srv/uconn_configs/kfs-external-config.properties" to VM arguments.

Tomcat

Additional jar files.

Standalone requires a spring class loader TomcatInstrumentableClassLoader so the jar file needs to be in the $CATALINA_HOME/lib directory.  The file is available from mvnrepository,com  (https://mvnrepository.com/artifact/org.springframework/spring-instrument-tomcat). Select the appropriate version, download the jar file and place it into your $CATALINA_HOME/lib directory.

In order to get rice to run locally you will need to place the spring-instrument-tomcat-4.3.18.RELEASE.jar and the correct version of ojdbc6.jar  in your $CATALINA_HOME/lib$CATALINA_HOME/lib directory.  Also put the file OJB.properties in your home directory.


Running KFS and Rice on different ports in the same instance of Tomcat

Tomcat Configuration

Create the following directories: (==> sym link)

/usr/share/tomcat8/webapps-localhost2 ==> /var/lib/tomcat8/webapps-localhost2

/usr/share/tomcat8/work/Catalina-localhost2 ==>/var/cache/tomcat8/work/Catalina-localhost2/

/usr/share/tomcat8/work/Catalina-localhost2/localhost2 ==>/var/cache/tomcat8/work/Catalina-localhost2/localhost2

Add the following to  /usr/share/tomcat8//conf/server.xml

 .
.
.

	<Service name="Catalina-localhost2">
		<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
		<Connector port="8008" protocol="AJP/1.3" redirectPort="8444" />
		<Engine name="Catalina-localhost2" defaultHost="localhost2">
      	<Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
			<Host name="localhost2" appBase="webapps-localhost2"
            unpackWARs="true" autoDeploy="true">
				<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                prefix="localhost2_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
			</Host>
		</Engine>
	</Service>

</Server>

It is imparitive that tomcat be configured to start whatever the Rice service engine first.

Application Deployment

Each application must be deployed in a different webapps directory... ../webapps/kfs-xxx.war  and ../webapps-localhost2/kr-xxx.war. The url designations in the rice-config.xml and kfs-external-config.properties do not need to change.

Standalone Rice Configuration

Directory structure

The directory /srv/uconn_configs/rice-config/ contains the following:

  • Files

    • rice-config.xml

    • log4j.properties

    • rice.keystore

    • rice.rsa

  • Directories
    • logs
    • plugins (for external workflow applications)

Configuration files


rice-config.xml
<!--
 Copyright 2008-2009 The Kuali Foundation
 
 Licensed under the Educational Community License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
 http://www.opensource.org/licenses/ecl2.php
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<config>
   
    <!-- Application URL Configuration -->
    <!-- Please fill in values for these parameters! -->
    <param name="environment"><[environment]</param>
    <param name="app.context.name">kr-${environment}</param>
    <param name="context.names.rice">kr-${environment}</param>
    <param name="context.names.app">${app.context.name}</param>
     
    <param name="application.host">[rice server]</param>
    <param name="application.url">${application.host}/${context.names.rice}</param>
    <param name="workflow.url">${application.url}/kew</param>
    <param name="appserver.url">${application.host}</param>

    <param name="context.names.kfs">kfs-[environment]</param>
    <param name="kfs.url">[ kfs server ]/${context.names.kfs}</param>
    
    <!-- set some datasource defaults -->
    <param name="datasource.ojb.platform">Oracle9i</param>
    <param name="datasource.platform">org.kuali.rice.core.framework.persistence.platform.OracleDatabasePlatform</param>
	<!-- test Exadata database -->
    <param name="datasource.url">jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=exa02-scan.uits.uconn.edu)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=kfsupdev.uits.uconn.edu)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))</param>
    <param name="datasource.driver.name">oracle.jdbc.driver.OracleDriver</param>
    <param name="datasource.username">kr_[environment]</param>
    <param name="datasource.password">[ password ]</param>
    <param name="datasource.maximum.cached.preparedstatements">25</param>
    <!-- btm -->
    <param name="datasource.btm.journal">null</param>
    <param name="datasource.btm.acquisitionInterval">12</param> 
    <param name="datasource.btm.connectionTestTimeout">8</param>
    <param name="datasource.btm.acquisitionTimeout">242</param>
    <param name="datasource.btm.driverProperties.loginTimeout">6</param>
    <param name="datasource.btm.applyTransactionTimeout">false</param>
    <param name="datasource.btm.warnAboutZeroResourceTransaction">false</param>
    <param name="datasource.btm.pool.class">bitronix.tm.resource.jdbc.lrc.LrcXADataSource</param>
    <!-- obj -->
    <param name="datasource.ojb.sequence.manager">org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl</param>
    <param name="datasource.ojb.sequenceManager.className">org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl</param>
    <!-- connection pool  -->
    <param name="datasource.pool.maxActive">100</param>
    <param name="datasource.pool.minIdle">5</param>
    <param name="datasource.pool.initialSize">50</param>
    <param name="datasource.pool.maxSize">100</param>
    <param name="datasource.pool.minSize">5</param>
    <param name="datasource.pool.maxWait">3000</param>
    <param name="datasource.pool.validationQuery">select 1</param>
    <param name="datasource.pool.max.idle.time">3600</param>
    <param name="datasource.pool.max.life.time">4800</param>
    <param name="datasource.pool.isolation.level">READ_COMMITTED</param>
    <param name="datasource.pool.enable.jdbc4.connection.test">true</param>
    <param name="datasource.pool.share.transaction.connections">true</param>
    <param name="datasource.pool.class">${datasource.btm.pool.class}</param>
    <param name="connection.pool.impl">BitronixXa</param>
    <param name="datasource.pool.isolation.level">READ_COMMITTED</param>
    
    <!-- rice -->
    <param name="rice.datasource.url">${datasource.url}</param>
    <param name="rice.datasource.username">${datasource.username}</param>
    <param name="rice.datasource.password">${datasource.password}</param>
    <param name="rice.datasource.driver.name">${datasource.driver.name}</param>
    <param name="rice.datasource.pool.maxWait">${datasource.pool.maxWait}</param>
    <param name="rice.datasource.pool.minSize">${datasource.pool.minSize}</param>
    <param name="rice.datasource.pool.maxSize">${datasource.pool.maxSize}</param>
    <param name="rice.datasource.pool.maxActive">${datasource.pool.maxActive}</param>
    <param name="rice.datasource.validating.query">${datasource.pool.validationQuery}</param>
    <param name="rice.datasource.pool.accessToUnderlyingConnectionAllowed">true</param>
    <param name="rice.datasource.pool.minIdle">${datasource.pool.minIdle}</param>
    <param name="rice.datasource.pool.initialSize">${datasource.pool.initialSize}</param>
    
    <param name="rice.custom.ojb.properties">classpath:org/kuali/rice/core/ojb/RiceOJB.properties</param>
    
    <!-- necessary for kfs account infor web service -->
    <param name="kfs.datasource.url">${datasource.url}</param>
    <param name="kfs.datasource.username">kfs_[ environment ]</param>
    <param name="kfs.datasource.password">[ password ]</param>
    <param name="kfs.datasource.driver.name">${datasource.driver.name}</param>
    <param name="kfs.datasource.pool.maxWait">${datasource.pool.maxWait}</param>
    <param name="kfs.datasource.pool.minSize">${datasource.pool.minSize}</param>
    <param name="kfs.datasource.pool.maxSize">${datasource.pool.maxSize}</param>
    <param name="kfs.datasource.pool.maxActive">${datasource.pool.maxActive}</param>
    <param name="kfs.datasource.validating.query">${datasource.pool.validationQuery}</param>
    <param name="kfs.datasource.pool.accessToUnderlyingConnectionAllowed">true</param>
    <param name="kfs.datasource.pool.minIdle">${datasource.pool.minIdle}</param>
    <param name="kfs.datasource.pool.initialSize">${datasource.pool.initialSize}</param>
    <param name="kfsLocator.useAppContext">true</param>
   
    <!-- KSB remoting service definitions -->
    <param name="serviceServletUrl">${application.url}/remoting</param>

    <!-- directory -->
    <param name="rice.config.directory">/srv/uconn_configs/rice-config</param>    
    <param name="security.directory" override="false">${rice.config.directory}</param>
    <param name="settings.directory" override="false">${rice.config.directory}</param>
    <param name="plugin.dir">${rice.config.directory}/plugins</param>
    <param name="data.xml.root.location">${rice.config.directory}/kew/xml</param>
    <param name="attachment.dir.location">${rice.config.directory}/kew_attachments</param>
    <param name="attachments.directory" override="false">${attachment.dir.location}/${environment}/attachments</param>
    <param name="attachments.pending.directory" override="false">${attachments.directory}/pending</param>

     <param name="portal.css.files" override="false">rice-portal/css/portal.css,rice-portal/css/uconn_portal.css,krad/plugins/fancybox/jquery.fancybox-1.3.4.css,krad/plugins/rice/textpopout/popoutTextarea.css,krad/plugins/jgrowl/jquery.jgrowl.css</param>
  
    <!-- log4j settings -->
    <param name="log4j.settings.path">${rice.config.directory}/log4j.properties</param>
    <param name="log4j.settings.reloadInterval">5</param>

    <!-- Keystore and Encryption Configuration -->

    <param name="keystore.file">${rice.config.directory}/rice.keystore</param>
    <param name="keystore.alias">rice</param>
    <param name="keystore.password">[keystore password]</param>

    <!-- parameters for Aes 256 bit encryption -->
        <param name="encryption.key">[ encryption key ]</param>
        <param name="other.encryption.key">[ other encryption key ]</param>

    <!-- Mail Node Configuration -->
        <param name="mail.relay.server">localhost</param>
        <param name="mailing.list.batch">mailing.list.batch</param>
        
     <!-- CAS integration configuration  -->
      <param name="cas.context.name" override="false">cas</param>
       <param name="cas.rice.server.name">${application.host}</param> 
       <param name="cas.url">https://login.uconn.edu/${cas.context.name}</param>
       <param name="cas.require.https">false</param> 
       <param name="cas.validate.password">false</param> 

       <param name="filter.login.class">org.jasig.cas.client.authentication.AuthenticationFilter</param>
       <param name="filter.login.casServerLoginUrl">${cas.url}/login</param>
       <param name="filter.login.serverName">${cas.rice.server.name}</param>
       <param name="filtermapping.login.1">/*</param>

      <param name="filter.validation.class">org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</param>
       <param name="filter.validation.casServerUrlPrefix">${cas.url}</param>
       <param name="filter.validation.serverName">${cas.rice.server.name}</param>
       <param name="filtermapping.validation.2">/*</param>

       <param name="filter.caswrapper.class">org.jasig.cas.client.util.HttpServletRequestWrapperFilter</param>
       <param name="filtermapping.caswrapper.3">/*</param>
    
    <!-- end CAS integration configuration  -->

    <!--Dummy Login Filter - use if you don't want to go through CAS
        <param name="filter.login.class">org.kuali.rice.krad.web.filter.AutoLoginFilter</param>
        <param name="filtermapping.login.1">/*</param>
        <param name="filter.login.autouser">dac04010</param>
   -->
        <!-- Sample Application Flag -->
        <param name="sample.enabled">false</param>
        <param name="dev.mode">false</param> 

    <!-- ldap mappings  -->
        <param name="rice.ldapattr.entityId">uid</param>
        <param name="rice.ldapattr.principalName">uid</param>
        <param name="rice.ldap.principalAlwaysActive">true</param>
        <param name="rice.ldapattr.firstName">givenName</param>
        <param name="rice.ldapattr.middleName">initials</param>
        <param name="rice.ldapattr.lastName">sn</param>
        <param name="rice.ldapattr.fullName">cn</param>
        <param name="rice.ldapattr.displayName">displayName</param>
        <param name="rice.ldapattr.title">title</param>
        <param name="rice.ldapattr.email">mail</param>
        <param name="rice.ldapattr.phoneNumber">publishedTelephoneNumber</param>
        <param name="rice.pattern.phoneNumberKimFormat">%s-%s-%s</param>
         <param name="rice.ldapattr.date.of.birth">uconnPersonDateOfBirth</param>
        <param name="rice.pattern.phoneNumberLdapRegex">.*([0-9]{3}).*([0-9]{3}).*([0-9]{4})</param>
        <param name="rice.ldapattr.employeeId">uconnPersonEmplID</param>
        <param name="rice.ldapattr.payrollId">uconnPersonPayrollID</param> 
        <param name="rice.ldapattr.deptNumber">departmentNumber</param>   
        <param name="rice.ldapattr.deptName">uconnDepartment</param>
        <param name="rice.ldapattr.employeeType"></param>
        <param name="rice.ldapattr.employeeStatus"></param>
        <param name="rice.ldap.employeeTypeMappings"></param>   
        <param name="rice.ldapattr.building">buildingName</param>
        <param name="rice.ldapattr.street">street</param>
        <param name="rice.ldapattr.postalAddr">postalAddress</param>
        <param name="rice.ldapattr.city"></param>
        <param name="rice.ldapattr.state"></param>
        <param name="rice.ldapattr.country"></param>
        <param name="rice.ldapattr.zipCode"></param>
        <param name="rice.ldapattr.campus">l</param>
        <param name="rice.ldapattr.primaryAffiliation">eduPersonPrimaryAffiliation</param>
        <param name="rice.ldapattr.affiliation">eduPersonAffiliation</param>
          <param name="rice.ldapattr.uconnPerson.affiliation">uconnPersonAffiliation</param>
        <param name="rice.ldapattr.personEntitlement">eduPersonEntitlement</param>
        <param name="rice.ldap.affiliationMappings">STAFF=staff,FCLTY=faculty,STDNT=student,AFLT=affiliate</param>
        <param name="rice.ldap.campusMappings">Storrs=01,Hartford=02,Stamford=03,Torrington=04,Waterbury=05,Avery Point=06,Health Center=07,Extension Services=08</param>       
        <param name="rice.ldap.cityZipMappings">Storrs=06269,Hartford=06117,Stamford=06901,Torrington=06790,Waterbury=06702,Avery Point=06340,Health Center=06030,Extension Services=000000</param>
        <param name="rice.ldap.defaultCampusCode"></param>
        <param name="rice.ldap.defaultCityCode"></param>
        <param name="rice.ldap.defaultStateCode">CT</param>
        <param name="rice.ldap.defaultCountryCode">US</param>
        <param name="rice.ldap.defaultZipCode"></param>
        <param name="rice.ldapattr.unitNumber">uconnUnitNumber</param> 
        <param name="rice.ldapattr.uconnPublished">uconnPublished</param>
        <param name="rice.ldapattr.uconnPublished.email">uconnPublishedEmail</param>
        <param name="rice.ldap.objectClass">objectClass</param>
        <param name="rice.kim.entityTitleLength">20</param>
        <param name="rice.kim.employee.status.id">employee</param>
        <param name="rice.ldap.search.limit">5000</param>
      <!-- additional parameters -->
        <param name="organization.types">Division=4;VP Cabinet=5;AVP Dean=6;Discipline/Grouping=7;Department=8;Sub-Department 1=9;Sub-Department 2=T</param>
        <param name="organization.type.xref">executive=Division;unit=VP Cabinet,AVP Dean,Discipline/Grouping;department=Department,Sub-Department 1,Sub-Department 2</param>
        <param name="rice.default.chart.code">UC</param>
        <!-- role names for organization routing -->
        <param name="uconn.routing.departmentRole">Derived Role: UConn Dept Head</param>
        <param name="uconn.routing.unitRole">Derived Role: UConn Unit Head</param>
        <param name="uconn.routing.execRole">Derived Role: UConn Exec Head</param>
        <param name="uconn.routing.univHeadRole">Derived Role: UConn University Head</param>
        <param name="uconn.routing.subDeptRole">Derived Role: UConn SubDept Head</param>
        <param name="uconn.workflow.viewerRole">Derived Role: UConn Workflow Document Viewer</param>
        <param name="uconn.workflow.subDeptViewerRole">Derived Role: UConn SubDept Workflow Document Viewer</param>
        <param name="uconn.workflow.deptViewerRole">Derived Role: UConn Dept Workflow Document Viewer</param>
        <param name="uconn.workflow.unitViewerRole">Derived Role: UConn Unit Workflow Document Viewer</param>
        <param name="uconn.workflow.execViewerRole">Derived Role: UConn Exec Workflow Document Viewer</param>
  
        <!-- LDAP connection -->
       <param name="rice.ldap.username">uid=uits-kuali,ou=accounts,ou=ldap,dc=uconn,dc=edu</param>
       <param name="rice.ldap.password">[ ldap password ]</param>
       <param name="rice.ldap.url">ldap://ldap.uconn.edu</param>
       <param name="rice.ldap.base">dc=uconn,dc=edu</param>
       <!-- KPS-598 Jaggaer Single Sign On (SSO) - Roles and Orgs -->
        <param name="ldap.wrt.username">uid=uits-kuali,ou=accounts,ou=ldap,dc=uconn,dc=edu</param>
        <param name="ldap.wrt.password">[ ldap password </param>
        <param name="ldap.wrt.url">ldap://master.ldap.uconn.edu</param>
        <param name="ldap.wrt.base">dc=uconn,dc=edu</param>
            <!-- additional parameters -->
        <param name="organization.types">Division=4;VP Cabinet=5;AVP Dean=6;Discipline/Grouping=7;Department=8;Sub-Department 1=9;Sub-Department 2=T</param>
        <param name="organization.type.xref">executive=Division;unit=VP Cabinet,AVP Dean,Discipline/Grouping;department=Department,Sub-Department 1,Sub-Department 2</param>

        <param name="rice.default.chart.code">UC</param>
        <!-- role names for organization routing -->
        <param name="uconn.routing.departmentRole">Derived Role: UConn Dept Head</param>
        <param name="uconn.routing.unitRole">Derived Role: UConn Unit Head</param>
        <param name="uconn.routing.execRole">Derived Role: UConn Exec Head</param>
        <param name="uconn.routing.univHeadRole">Derived Role: UConn University Head</param>
    
        <param name="uconn.routing.subDeptRole">Derived Role: UConn SubDept Head</param>
        <param name="uconn.workflow.viewerRole">Derived Role: UConn Workflow Document Viewer</param>
        <param name="uconn.workflow.subDeptViewerRole">Derived Role: UConn SubDept Workflow Document Viewer</param>
        <param name="uconn.workflow.deptViewerRole">Derived Role: UConn Dept Workflow Document Viewer</param>
    
        <param name="uconn.workflow.unitViewerRole">Derived Role: UConn Unit Workflow Document Viewer</param>
        <param name="uconn.workflow.execViewerRole">Derived Role: UConn Exec Workflow Document Viewer</param>

        <!-- rice module configuration -->
        <param name="kim.mode" override="false">LOCAL</param>

        <!-- uconn module configuration  -->
        <param name="uconn.url" override="false">${application.url}/uconn</param>
        <param name="uconn.mode" override="false">LOCAL</param>
        <param name="uconn.soapExposedService.jaxws.security">false</param>
        <param name="uconn.ldapService.jaxws.security">false</param>
       <!-- webservice -->

       <param name="kim.soapExposedService.jaxws.security">false</param>
       <param name="rice.ksb.serviceRegistry.security">true</param>
        
        <!-- Allowed values for request parameter backLocation 
         To prevent nefarious hacking using the request parameter Rice only allows certain values for the 'backLocation' request parameter.
         This creates a problem for developers running KFS locally and pointing to the standalone Rice server. 
         Comment out the 'non production environments' block for production servers and conversely the ' non production environments' block for
 	     other environments.
        -->
		<param name="rice.backLocation.default.url">${application.url}</param>
 	   <!-- non production environments -->
       <param name="rice.dev.backLocation">http://localhost:8080</param>    
       <param name="rice.backLocation.allowed.regex">^(${application.url}|${kfs.url}|${rice.appserver.url}|${rice.dev.backLocation})(/.*|)</param>
      <!--end non production environments --> 
	  
	  <!-- production environments -->
       <param name="rice.backLocation.allowed.regex">^(${application.url}|${kfs.url}|${rice.appserver.url})(/.*|)</param>
	  <!-- end production environments -->
       
       
       <!-- additional spring beans files -->
       <param name="rice.kr.additionalSpringFiles">classpath:edu/uconn/kuali/rice/config/UConnKrOverrideSpringBeans.xml</param>       
       <param name="rice.kew.additionalSpringFiles">classpath:edu/uconn/kuali/rice/config/UConnKewOverrideSpringBeans.xml</param>
       <param name="rice.ksb.additionalSpringFiles">classpath:edu/uconn/kuali/rice/config/UConnKsbOverrideSpringBeans.xml</param>
       <param name="rice.kim.additionalSpringFiles">classpath:org/kuali/rice/kim/config/KIMLdapSpringBeans.xml,classpath:edu/uconn/kuali/rice/config/UConnKimOverrideSpringBeans.xml</param>
        <!-- end additional spring beans files -->

<!-- quartz -->
    <param name="useQuartzDatabase">true</param>    
 
</config>


log4j.properties
status = info
name= properties_configuration

# Give directory path where log files should get stored
property.basePath = /srv/uconn_configs/kfs-config/logs/

# ConsoleAppender will print logs on console
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.target = SYSTEM_OUT
appender.console.layout.type = PatternLayout

# Specify the pattern of the logs
appender.console.layout.pattern = %d [%t] u:%X{user}/d:%X{docId} %-5p %c :: %m%n
#appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%c] [%M] [%l] - %msg%n


# RollingFileAppender will print logs in file which can be rotated based on time or size
appender.rolling.type = RollingFile
appender.rolling.name = fileLogger
appender.rolling.fileName= ${basePath}app.log
appender.rolling.filePattern= ${basePath}app_%d{yyyyMMdd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d [%t] u:%X{user}/d:%X{docId} %-5p %c :: %m%n
appender.rolling.policies.type = Policies

# Rotate log file each day and keep 5 days worth
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.delete.type = Delete
appender.rolling.strategy.delete.basePath = ${basePath}
appender.rolling.strategy.delete.maxDepth = 1
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified
# Delete files older than 30 days
appender.rolling.strategy.delete.ifLastModified.age = 5d


# RollingFileAppender will print logs in file which can be rotated based on time or size
appender.memory.type = RollingFile
appender.memory.name = memoryLogger
appender.memory.fileName= ${basePath}memory.log
appender.memory.filePattern= ${basePath}app_%d{yyyyMMdd}.log.gz
appender.memory.layout.type = PatternLayout
appender.memory.layout.pattern = %d [%t] u:%X{user}/d:%X{docId} %-5p %c :: %m%n
appender.memory.policies.type = Policies

# Rotate log file each day and keep 5 days worth
appender.memory.policies.time.type = TimeBasedTriggeringPolicy
appender.memory.policies.time.interval = 1
appender.memory.policies.time.modulate = true
appender.memory.strategy.type = DefaultRolloverStrategy
appender.memory.strategy.delete.type = Delete
appender.memory.strategy.delete.basePath = ${basePath}
appender.memory.strategy.delete.maxDepth = 1
appender.memory.strategy.delete.ifLastModified.type = IfLastModified
# Delete files older than 30 days
appender.memory.strategy.delete.ifLastModified.age = 5d


# Mention package name here in place of example. Classes in this package or subpackages will use ConsoleAppender and RollingFileAppender for logging         

logger.MemoryMonitor.name = org.kuali.kfs.sys.MemoryMonitor
logger.MemoryMonitor.level = warn
logger.MemoryMonitor.additivity = false
logger.MemoryMonitor.appenderRef.rolling.ref = memoryLogger

logger.edu1.name = edu.uconn.kuali
logger.edu1.level = info
logger.edu1.additivity = false
logger.edu1.appenderRef.rolling.ref = fileLogger
logger.edu1.appenderRef.console.ref = consoleLogger

logger.org.name = org
logger.org.level = warn
logger.org.additivity = false
logger.org.appenderRef.rolling.ref = fileLogger
logger.org.appenderRef.console.ref = consoleLogger

logger.apache.name = org.apache.struts
logger.apache.level = info
logger.apache.additivity = false
logger.apache.appenderRef.rolling.ref = fileLogger
logger.apache.appenderRef.console.ref = consoleLogger

logger.rice.name = org.kuali.rice
logger.rice.level = info
logger.rice.additivity = false
logger.rice.appenderRef.rolling.ref = fileLogger
logger.rice.appenderRef.console.ref = consoleLogger

# Configure root logger for logging error logs in classes which are in package other than above specified package
rootLogger.level = info
rootLogger.additivity = false
rootLogger.appenderRef.rolling.ref = fileLogger
rootLogger.appenderRef.console.ref = consoleLogger



#### from old logger
logger.org.kuali.kfs.sys.context.Log4jConfigurer=WARN
logger.org.kuali.rice.core.framework.resourceloader.BaseResourceLoader=WARN
logger.org.kuali.rice.kew.util.PerformanceLogger=WARN
logger.org.kuali.rice.core.impl.config.property.JAXBConfigImpl=ERROR
logger.org.kuali.rice.krad.datadictionary.DataDictionary=WARN
logger.org.kuali.rice.core.api.resourceloader.GlobalResourceLoader=WARN
logger.org.springframework.aop.framework.Cglib2AopProxy=ERROR
logger.org.springframework.beans.factory.xml.XmlBeanDefinitionReader=WARN
logger.org.springframework.beans.factory.support.KualiDefaultListableBeanFactory=WARN
logger.org.springframework.context.annotation.ClassPathBeanDefinitionScanner=WARN

# OJB
logger.org.apache.ojb.broker=WARN
logger.org.apache.ojb.broker.metadata=WARN
logger.org.apache.ojb.broker.core.proxy=WARN
logger.org.apache.ojb.broker.core.proxy.IndirectionHandler=ERROR
logger.org.apache.ojb.broker.core.PersistenceBrokerImpl=WARN

# Spring Framework
logger.org.springframework.jdbc.core.JdbcTemplate=TRACE
logger.org.springframework.beans.factory=WARN
logger.org.springframework.context.support.ClassPathXmlApplicationContext=WARN

# DWR
logger.org.directwebremoting=WARN
logger.org.directwebremoting.impl.DefaultConverterManager=ERROR
logger.org.directwebremoting.convert.BeanConverter=ERROR
logger.org.directwebremoting.impl.DTDEntityResolver=ERROR
logger.org.directwebremoting.log.startup=ERROR

# KSB
logger.org.kuali.rice.ksb.messaging.serviceexporters=WARN
logger.org.kuali.rice.ksb.messaging.BusClientFailureProxy=WARN

# KFS : Quiet Down Standard Messages
logger.org.kuali.rice.kew.impl.rule.RuleServiceImpl=WARN
logger.org.kuali.kfs.coa.document.validation.impl=WARN
logger.org.kuali.kfs.module.cg.document.validation.impl=WARN
logger.org.kuali.rice.krad.document.DocumentBase=INFO
logger.org.kuali.rice.kns.web.struts.form.pojo.PojoPropertyUtilsBean=ERROR
logger.org.kuali.rice.krad.bo.PersistableBusinessObjectBase=ERROR
logger.org.kuali.kfs.integration=ERROR
logger.org.kuali.rice.kim.service.impl.PersonServiceImpl=ERROR
logger.org.displaytag=ERROR
logger.org.kuali.rice.kns.web.struts.action.KualiAction=ERROR
logger.org.kuali.rice.ksb.messaging.serviceproxies.MessageSendingTransactionSynchronization=WARN
logger.org.apache.struts.util.PropertyMessageResources=ERROR

# Some logging in this service should only have been at WARN level
# but nothing important for KFS is logged from these services
logger.org.kuali.rice.kim.service.impl.ResponsibilityServiceImpl=FATAL
logger.org.kuali.rice.kns.web.struts.action.KualiInquiryAction=FATAL

logger.org.apache.ws=ERROR
logger.org.apache.xml=ERROR
logger.org.quartz=WARN
logger.org.apache.cxf=WARN

KFS Configuration

Directory structure

The directory /srv/uconn_configs contains the following

  • Files
    • kfs-external-config.properties
  • Directories
    • log4j.properties
    • kfs-config
      • logs
      • security
        • security.properties
        • rice.keystore
      • work
        • attachments
          • pending
        • git-repository
          • dbscripts
            • kfs-scripts
            • kr-scripts
        • staging
          • adp
            • archive
            • staging
          • ar
            • customer
            • customerInvoiceAndCreditMemo
            • invoiceWriteoff
            • lockbox
          • cm
            • assets
            • barcode
          • coa
            • coreCT
            • famis
            • genesys
            • hcm
            • rsa
          • cr
            • archive
            • external
            • upload
          • endow
          • fp
            • disbursementVoucher
            • mastercardInput
            • masterCardInput
            • procurementCard
          • gl
            • collectorFlatFile
            • collectorXml
            • correctionProcess
            • enterpriseFeed
            • originEntry
            • test_directory
          • ld
            • correctionProcess
            • enterpriseFeed
            • genesys
            • originEntry
          • pdp
            • bankFederalReserve
            • paymentExtract
            • paymentImport
            • paymentLoadSummary
            • researchParticipant
          • prje
            • parameters
            • sqlScripts
          • purap
            • electronicInvoice
            • purchaseOrder
            • requisition
          • sys
            • batchContainer
            • coreCT
            • genesys
          • tax
          • vnd
            • delinquentVendor
            • drs
            • exclusion
          • workflow
            • ingestion
            • loaded
            • pending
            • problems
        • scriptRunner
        • reports
          • ar
          • bc
          • cab
          • cam
          • cg
          • coa
          • cr
          • ec
          • endow
          • fp
          • gl
          • ld
          • pdp
          • pmw
          • prje
          • purap
          • sys
          • tax
          • vnd


The following scripts will copy the existing KFS configuration directory structure to the new structure and delete the old structure. The scripts are located in the uconn/upgrade-kfs-7 directory of the project.

It is advisable to leave the old structure in tact for a brief time to act as an archive in case there are problems creating the new structure.

create-kfs-config-directories
#!/bin/sh
var="$1"
if test -z "$var" 
    then
        echo "must specify either dev or prd"
    else
        mkdir -v /srv/uconn_configs/kfs-config/work/templates
        chmod 777 /srv/uconn_configs/kfs-config/work/templates
        mkdir -v /srv/uconn_configs/kfs-config/work/templates/ar
        
        cp -rv  /srv/uconn_configs/kfs-config/work/$var/kfs/staging/ /srv/uconn_configs/kfs-config/work/staging/ 
        cp -rv  /srv/uconn_configs/kfs-config/work/$var/kfs/attachments/ /srv/uconn_configs/kfs-config/attachments/ 
        cp -rv  /srv/uconn_configs/kfs-config/work/$var/kfs/git-repository/ /srv/uconn_configs/kfs-config/git-repository/ 
        cp -rv  /srv/uconn_configs/kfs-config/work/$var/kfs/reports/ /srv/uconn_configs/kfs-config/reports/
        cp -rv  /srv/uconn_configs/kfs-config/work/$var/kfs/scriptRunner/ /srv/uconn_configs/kfs-config/scriptRunner/
        cp -rv  /srv/uconn_configs/kfs-config/work/$var/kfs/temp/ /srv/uconn_configs/kfs-config/temp/
        cp -rv /srv/uconn_configs/kfs-config/sa_forms/java/$var/kfs/ /srv/uconn_configs/kfs-config/security/        
fi


clean-up-directories
#!/bin/sh
var="$1"
if test -z "$var" 
    then
        echo "must specify either dev or prd"
    else
        rm -rfv  /srv/uconn_configs/kfs-config/work/$var/ 
        rm -rfv /srv/uconn_configs/kfs-config/sa_forms/
        rm -rfv /srv/uconn_configs/kfs-config/ears/
        rm -rfv /srv/uconn_configs/kfs-config/j2ee/
fi


Configuration flies

There are two main  extermal configuration files kfs-external-config.properties and security properties.  The kfs-external-config.properties file contains basic configuration that are subject to change such as the environment, application host url, and rice url.  The non production base url is https://kualinp.uconn.edu, the production url is https://kuali.uconn.edu.  The complete url for UAT would be https://kualinp.uconn.edu/kfs-uat for KFS and https://kualinp.uconn.edu/kr-uat form Rice.

The security.properties file contains database connection information, and user ids and passwords for various other components.

kfs-external-config.properties
# External Configuration Properties 
#
########################################
# Environment specific changes begin
########################################

#Set this to the deployed environment.
environment=<envirment>


#Set the KFS appserver url
## production
appserver.url=https://kuali.uconn.edu
## any non production environment
appserver.url=https://kualinp.uconn.edu
## local
#appserver.url=http://localhost:8080

#Set based which rice environment is to be used with KFS. A local example is provided.
rice.environment=<rice-env>
rice.appserver.url=https"//<rice url>
#rice.environment=dev
#rice.appserver.url=http://localhost:8081

# set batch mode to false and kfs will publish services. Should be true if localhost
rice.ksb.batch.mode=false
##rice.ksb.batch.mode=true

########################################
# Environment specific changes end
########################################

## apis.enabled determines whether REST APIs are accessible from an outside client
apis.enabled=true
app.code=kfs

application.host=${appserver.url}
context.names.app=${app.code}-${environment}
context.names.kfs=${app.code}-${environment}
app.context.name=${context.names.app}
base.url=${appserver.url}
application.url=${appserver.url}/${context.names.kfs}
application.id=KFS
kfs.mode=LOCAL
# this property can be used to turn p6spy logging on and off (we use p6spy to log the sql generated by ojb)
use.p6spy=true
#
#	Directories
#
base.directory=/srv/uconn_configs/kfs-config
work.directory=${base.directory}/work
staging.directory=${work.directory}/staging
security.directory=${base.directory}/security
staging.directory.sys.batchContainer=${staging.directory}/sys/batchContainer
reports.directory=${work.directory}/reports
security.property.file=file:${security.directory}/security.properties
templates.directory=${work.directory}/templates

config.url=${appserver.url}/${base.directory}
reports.url=${appserver.url}

temp.directory=${work.directory}/temp
logs.directory=${base.directory}/logs
monitoring.directory=${logs.directory}/monitoring
attachments.directory=${base.directory}/work/attachments
attachment.dir.location=${attachments.directory}
attachments.pending.directory=${attachments.directory}/pending
settings.directory=${base.directory}/settings
data.xml.root.location=${base.directory}/work/staging/workflow
data.xml.pending.location=${base.directory}/work/staging/workflow/pending
data.xml.loaded.location=${base.directory}/work/staging/workflow/loaded
data.xml.problem.location=${base.directory}/work/staging/workflow/problem
log4j.settings.path=file:/srv/uconn_configs/kfs-config/log4j.properties

log4j.settings.file=file:/srv/uconn_configs/kfs-config/log4j.properties
keystore.file=/srv/uconn_configs/kfs-config/security/rice.keystore
batch.file.lookup.root.directories=${base.directory}/work/staging;${base.directory}/work/reports
temp.directory=${work.directory}/temp
cache.service.bus.security.enabled=true
contracts.grants.billing.enabled=false
csrf.enabled=false
kew.callback.service.bus.security.enabled=true
dev.mode=false
kfs.mode=LOCAL
# necessary to include uconn module in embedded rice
uconn.mode=LOCAL


feedback.link.url=

#jwt.expiration.seconds=86400

connection.pool.impl=BitronixXa
datasource=kfsDataSource${connection.pool.impl}

# kfs
kfs.url=${application.url}
kfs.externalizable.help.url=${externalizable.static.content.url}
kfs.locale=en_US
kfs.service.namespace.uri=http://kfs.kuali.org/kfs/v5_0

log4j.reload.minutes=5

login.filter.className=org.kuali.kfs.sys.web.filter.DevelopmentLoginFilter
#
#  rice properties
#
context.names.rice=kr-${rice.environment}
rice.server.url=${rice.appserver.url}/${context.names.rice}
rice.url=${rice.server.url}
rice.standalone=true
rice.ksb.registry.serviceUrl=${rice.server.url}/remoting/soap/ksb/v2_0/serviceRegistry
data.dictionary.validate=true
validate.ebo.references=true
classpath.resource.prefix=/WEB-INF/classes/

core.url=${rice.appserver.url}/${context.names.rice}/core
rice.server.krad.url=${rice.appserver.url}/${context.names.rice}/kr-krad
http.service.url=${rice.appserver.url}/${context.names.rice}/remoting
rice.server.krad.lookup.url=${rice.appserver.url}/${context.names.rice}/kr-krad/lookup


# System URLs
serviceServletUrl=${application.url}/remoting
ksb.client.url=${application.url}/ksb
ksb.server.url=${rice.server.url}/ksb
kr.url=${rice.server.url}/kr
krad.url=${rice.server.url}/kr-krad
kr.krad.url=${rice.server.url}/kr-krad
kcb.url=${rice.server.url}/kcb
ksb.url=${rice.server.url}/ksb
ken.url=${rice.server.url}/ken
krms.url=${rice.server.url}/krms
kim.url=${rice.server.url}/kim
workflow.url=${rice.server.url}/kew
kew.url=${rice.server.url}/kew
krad.lookup.url=${rice.server.url}/kr-krad/lookup
krad.inquiry.url=${rice.server.url}/kr-krad/inquiry
 
rice.portal.allowed.regex=^${application.url}(/.*|)|^${rice.server.url}(/.*|)
rice.backLocation.allowed.regex=^(${application.url}|${rice.url}|${appserver.url})(/.*|)
rice.backLocation.default.url=${application.url}


#mail.smtp.connectiontimeout=10000
#mail.smtp.timeout=10000
#message.queue.url=MessageQueue.do
module.access.security.enabled=true
module.accounts.receivable.enabled=true
module.capital.asset.enabled=true
module.contracts.and.grants.enabled=true
module.labor.distribution.enabled=true
module.purchasing.enabled=true

#periodic.thread.dump=true
#periodic.thread.dump.seconds=300
production.environment.code=prd

remote.view.url=${application.url}/remote

#skip.batch.directory.initiation=false
soap.service.default.service.bus.security.enabled=false

#thread.pool.url=ThreadPool.do
transaction.timeout=100000

rice.portal.links.showRiceServerConfig=true;

# UCONN CAS server URL for rics
cas.context.name=cas
cas.url=https://login.uconn.edu/cas
cas.login.url=${cas.url}/login
cas.server.url.prefix=https://login.uconn.edu/cas
cas.server.login.url=https://login.uconn.edu/cas/login
cas.server.name=${application.url}
cas.rice.server.name=${rice.server.url}
cas.require.https=false
cas.validate.password=false
cas.validate.url=${cas.url}/serviceValidate
cas.require.https" override="false=false
cas.validate.password=false
cas.rice.server.name=${appserver.url}

rice.default.chart.code=UC

# since rice is defaulting the environment to dev and not allowing override, we can't just use ${environment}
build.environment=${environment}

#kuali-monsters site had true
rice.ksb.web.forceEnable=true
workflow.documentsearch.base.url=${rice.server.url}/kew/DocumentSearch.do?docFormKey=88888888&returnLocation=${kfs.url}/portal.do&hideReturnLink=true
externalizable.static.content.url=${application.url}/static
externalizable.images.url=${externalizable.static.content.url}/images/
externalizable.help.url=${externalizable.static.content.url}/help/
kfs.externalizable.help.url=${externalizable.help.url}
kr.externalizable.images.url=${application.url}/kr/static/images/
krad.externalizable.images.url=${application.url}/krad/images/

batch.transaction.timeout=500000

# Email Properties
mail.relay.server=[[Please set this in your C:/Users/rlr15105/kfs-build.properties file.]]
mailing.list.batch=[[Please set this in your C:/Users/rlr15105/kfs-build.properties file.]]
kr.incident.mailing.list=[[Please set this in your C:/Users/rlr15105/kfs-build.properties file.]]
KualiExceptionIncidentServiceImpl.REPORT_MAIL_LIST=[[Please set this in your C:/Users/rlr15105/kfs-build.properties file.]]
mail.smtp.host=[[Please set this in your C:/Users/rlr15105/kfs-build.properties file.]]
mail.transport.protocol=smtp
real.notifications.enabled=true
nonproduction.notification.mailing.list=


# KIM Properties
kim.soapExposedService.jaxws.security=false

kim.identityArchiveServiceImpl.executionIntervalSeconds=600
kim.identityArchiveServiceImpl.maxWriteQueueSize=300
org.kuali.rice.kim.bo.ui.PersonDocumentEmploymentInfo.hidden=baseSalaryAmount
kim.hide.PersonDocumentAddress.type=HM
kim.hide.PersonDocumentPhone.type=HM
kim.show.blank.qualifiers=true

session.document.cache.size = 1000

# log4j file for Rice

# Unifier Integration Properties
unifier.security.enabled=false
unifier.api.url=${unifier.test.api.url}
#
#
#   ldap mapping information
#
rice.ldapattr.entityId=uid
rice.ldapattr.principalName=uid
rice.ldap.principalAlwaysActive=true
rice.ldapattr.firstName=givenName
rice.ldapattr.middleName=initials
rice.ldapattr.lastName=sn
rice.ldapattr.fullName=cn
rice.ldapattr.displayName=displayName
rice.ldapattr.title=title
rice.ldapattr.email=mail
rice.ldapattr.phoneNumber=publishedTelephoneNumber
rice.pattern.phoneNumberKimFormat=%s-%s-%s
rice.ldapattr.date.of.birth=uconnPersonDateOfBirth
rice.pattern.phoneNumberLdapRegex=.*([0-9]{3}).*([0-9]{3}).*([0-9]{4})
rice.ldapattr.employeeId=uconnPersonEmplID
rice.ldapattr.payrollId=uconnPersonPayrollID
rice.ldapattr.deptNumber=departmentNumber
rice.ldapattr.deptName=uconnDepartment
rice.ldapattr.employeeType=
rice.ldapattr.employeeStatus=
rice.ldap.employeeTypeMappings=
rice.ldap.employeeStatusMappings=true=A,false=T
rice.ldapattr.building=buildingName
rice.ldapattr.street=street
rice.ldapattr.postalAddr=postalAddress
rice.ldapattr.city=
rice.ldapattr.state=
rice.ldapattr.country=
rice.ldapattr.zipCode=
rice.ldapattr.campus=l
rice.ldapattr.primaryAffiliation=eduPersonPrimaryAffiliation
rice.ldapattr.affiliation=eduPersonAffiliation
rice.ldapattr.uconnPerson.affiliation=uconnPersonAffiliation
rice.ldap.affiliationMappings=STAFF=staff,FCLTY=faculty,STDNT=student,AFLT=affiliate
rice.ldap.campusMappings=Storrs=01,Hartford=02,Stamford=03,Torrington=04,Waterbury=05,Avery Point=06,Health Center=07,Extension Services=08 \u00a0 \u00a0 \u00a0
rice.ldap.cityZipMappings=Storrs=06269,Hartford=06117,Stamford=06901,Torrington=06790,Waterbury=06702,Avery Point=06340,Health Center=06030,Extension Services=000000
rice.ldap.defaultCampusCode=
rice.ldap.defaultCityCode=
rice.ldap.defaultStateCode=CT
rice.ldap.defaultCountryCode=US
rice.ldap.defaultZipCode=
rice.ldapattr.unitNumber=uconnUnitNumber
rice.ldapattr.uconnPublished=uconnPublished
rice.ldapattr.uconnPublished.email=uconnPublishedEmail
rice.ldap.objectClass=objectClass
## KPS-598 Jaggaer Single Sign On (SSO) - Roles and Orgs 
rice.ldapattr.personEntitlement=eduPersonEntitlement
jaggear.urn=urn:sciquest.com:solutions.sciquest.com:
rice.ldap.search.limit=5000
rice.ldap.ids.to.skip=2,KFS2,kr,kfs,admin,notsys
rice.ldap.student.affiliation=student
uconn.ldapService.jaxws.security=true

skip.batch.directory.initiation=false

# indicates whether schema validation should be built from data dictionary, otherwise validation is basic xsd types only
use.dd.schema.validation=false

# environmental display URL
#env.display.text=uconn kfs local

rice.kim.soapExposedService.jaxws.security=false
rice.kim.employee.status.id=employee
uconn.soapExposedService.jaxws.security=false
uconn.ldapService.jaxws.security=true
 
kim.soapExposedService.jaxws.security=false

# the institution specific css files that should be available to every non-portal page in the application
# IMPORTANT! The env.css might need to be removed in production.
institution.portal.css.files=,css/uconn_portal.css,css/env.css

unifier.production.security.enabled=true
unifier.test.security.enabled=true
unifier.production.api.url=http://pu.grove.ad.uconn.edu/UnifierWS
unifier.test.api.url=http://puint.grove.ad.uconn.edu/UnifierWS

userOptions.default.emailAgingNotification3=30 days

# B2B Integration Propertiessys/api/v1/system/environment
b2b.environment=test
b2b.punch.back.action.forwarding.url=/portal.do?channelTitle=Requisition&channelUrl=purapRequisition.do?methodToCall=displayB2BRequisition
b2b.punch.back.url=${application.url}/b2b.do?methodToCall=returnFromShopping
b2b.punch.out.url=http://usertest.sciquest.com/apps/Router/ExternalAuth/cXML/UCONN
b2b.purchase.order.url=https://usertest-messages.sciquest.com/apps/Router/POXMLImport
#
#Jaggaer Huskybuy url properties.
b2b.prvalidation.url=${b2b.test.prvalidation.url}
b2b.custom.field.url=${b2b.test.custom.field.url}
b2b.supplier.sync.url=${b2b.test.supplier.sync.url}
b2b.invoice.status.url=${b2b.test.invoice.status.url}
b2b.user.url=${b2b.test.user.url}
b2b.requisition.url=${b2b.test.requisition.url}
b2b.jaggaer.url=${b2b.test.jaggaer.url}
#
# script runner 
repository.uri=https://stash.uconn.edu/scm/kfs/dbscripts.git
repository.uri.test=https://stash.uconn.edu/scm/kfs/dbscripts-test.git
repository.local=${base.directory}/work/git-repository/dbscripts
repository.user=KFSScriptRunner
repository.password=<repository password>
kr.script.repository=kr-scripts
kr.otf.script.file.path=${base.directory}/work/scriptRunner/kr_OtfScrips.sql
kfs.script.repository=kfs-scripts
kfs.otf.script.file.path=${base.directory}/work/scriptRunner/kfs_OtfScrips.sql
script.archive.path=/archive
sqlplus.service.name=@KFSORA.world
#sqlplus.service.name=@KFSUPDEV.world 
sqlplus.path=/opt/oracleClient/product/12.2.0.1/client/bin/sqlplus

#   aim
aim.api.url=${aim.test.api.url}
unifier.api.url=${unifier.test.api.url}

#
# concur
#
aeweb.travel.test.url=https://dev.aeweb.uconn.edu:8058
aeweb.travel.prod.url=https://prd.aeweb.uconn.edu:8058
aeweb.hris.test.url=https://dev.aeweb.uconn.edu:8057
aeweb.hris.prod.url=https://prd.aeweb.uconn.edu:8057

aeweb.travel.api.url=${aeweb.travel.test.url}
aeweb.hris.api.url=${aeweb.hris.test.url}
## gpg
concur.gpg.public.key.file=${security.directory}/pubring.gpg
concur.gpg.private.key.file=${security.directory}/secret-keys.gpg
## directories
concur.archive.directory=${staging.directory}/concur/archive
concur.export.directory=${staging.directory}/concur/export
concur.import.directory=${staging.directory}/concur/import
concur.extract.directory=${staging.directory}/concur/extract
concur.sftp.import.directory=out/
concur.sftp.export.directory=in/
concur.encrypt.file.extension=.txt.gpg
concur.decrypt.file.extension=.txt

concur.oauth2.test.endpoint=https://us-impl.api.concursolutions.com/oauth2/v0/token
concur.oauth2.prod.endpoint=https://us.api.concursolutions.com/oauth2/v0/token
concur.oauth2.endpoint=${concur.oauth2.test.endpoint}
concur.oauth2.location=us.api.concursolutions.com
security.properties
########################################
# The Kuali Financial System, a comprehensive financial management system for higher education.
# 
# Copyright 2005-2014 The Kuali Foundation
# 
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
########################################

#
# common datasource
#

datasource.driver.name=oracle.jdbc.OracleDriver
datasource.driver=oracle.jdbc.OracleDriver
## Exadata data base
datasource.url=jjdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=exa02-scan.uits.uconn.edu)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=kfsupdev.uits.uconn.edu)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=20)(DELAY=5))))

datasource.connection.timeout=100000
datasource.validating.query=select 1 from dual
datasource.pool.maxActive=100
datasource.pool.minIdle=5
datasource.pool.initialSize=50
datasource.pool.accessToUnderlyingConnectionAllowed=true
datasource.pool.maxSize=100
datasource.pool.minSize=5
datasource.pool.maxWait=60000
datasource.pool.max.idle.time=3600
datasource.pool.max.life.time=4800
datasource.pool.isolation.level=READ_COMMITTED
datasource.pool.enable.jdbc4.connection.test=true
datasource.pool.share.transaction.connections=true
datasource.pool.class=bitronix.tm.resource.jdbc.lrc.LrcXADataSource
datasource.pool.class.non.xa=${datasource.pool.class}
datasource.pool.btm.warnAboutZeroResourceTransaction=${datasource.btm.warnAboutZeroResourceTransaction}
datasource.maximum.cached.preparedstatements=25
datasource.ojb.platform=Oracle9i
datasource.ojb.sequence.manager=org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl
datasource.ojb.sequenceManager.className=org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl
datasource.platform=org.kuali.rice.core.framework.persistence.platform.OracleDatabasePlatform

datasource.btm.acquisitionInterval=12
datasource.btm.connectionTestTimeout=8
datasource.btm.acquisitionTimeout=242
datasource.btm.driverProperties.loginTimeout=6
datasource.btm.applyTransactionTimeout=false
datasource.btm.warnAboutZeroResourceTransaction=false
datasource.btm.journal=null


kfs.datasource.username=<KFS USERNAME>
kfs.datasource.password=<KFS PASSWORD>

kfs.datasource.driver.name=${datasource.driver}
kfs.datasource.url=${datasource.url}
kfs.datasource.connection.timeout=${datasource.connection.timeout}
kfs.datasource.validating.query=${datasource.validating.query}
kfs.datasource.pool.maxActive=${datasource.pool.maxActive}
kfs.datasource.pool.minIdle=${datasource.pool.minIdle}
kfs.datasource.pool.initialSize=${datasource.pool.initialSize}
kfs.datasource.pool.accessToUnderlyingConnectionAllowed=${datasource.pool.accessToUnderlyingConnectionAllowed}
kfs.datasource.pool.maxSize=${datasource.pool.maxSize}
kfs.datasource.pool.minSize=${datasource.pool.minSize}
kfs.datasource.pool.maxWait=${datasource.pool.maxWait}
kfs.datasource.maximum.cached.preparedstatements=${datasource.maximum.cached.preparedstatements}
##
##

rice.datasource.username=<RICE USERNAME>
rice.datasource.password=<RICE PASSWORD>

rice.datasource.driver.name=${datasource.driver}
rice.datasource.url=${datasource.url}
rice.datasource.connection.timeout=${datasource.connection.timeout}
rice.datasource.validating.query=${datasource.validating.query}
rice.datasource.pool.maxActive=${datasource.pool.maxActive}
rice.datasource.pool.minIdle=${datasource.pool.minIdle}
rice.datasource.pool.initialSize=${datasource.pool.initialSize}
rice.datasource.pool.accessToUnderlyingConnectionAllowed=${datasource.pool.accessToUnderlyingConnectionAllowed}
rice.datasource.pool.maxSize=${datasource.pool.maxSize}
rice.datasource.pool.minSize=${datasource.pool.minSize}
rice.datasource.pool.maxWait=${datasource.pool.maxWait}
rice.datasource.maximum.cached.preparedstatements=${datasource.maximum.cached.preparedstatements}
#
#   ldap connection information
#
rice.ldap.username=uid=uits-kuali,ou=accounts,ou=ldap,dc=uconn,dc=edu
rice.ldap.password=<ldap password>
rice.ldap.base=dc=uconn,dc=edu
 
rice.ldap.url=ldap://ldap.uconn.edu
# test ldap
#rice.ldap.url=ldap://master-test.ldap.uconn.edu
## KPS-598 Jaggaer Single Sign On (SSO) - Roles and Orgs 
ldap.wrt.username=uid=uits-kuali,ou=accounts,ou=ldap,dc=uconn,dc=edu
ldap.wrt.password=<ldap password>
ldap.wrt.url=ldap://master.ldap.uconn.edu
ldap.wrt.base=dc=uconn,dc=edu

ojb.persistencebroker.pool.maxactive=${datasource.pool.size}

keystore.alias=rice
keystore.password=<rice key store password>
jwt.encryption.key=<jwt.encryption.key>
encryption.key=<encryption.key>
other.encryption.key=<other.encryption.key>

b2b.user.agent=kfs
b2b.purchase.order.identity=
b2b.purchase.order.password=
b2b.shopping.identity=
b2b.shopping.password=
b2b.test.poimport.identity=30003168
b2b.test.poimport.password=<password>
b2b.prvalidation.identity=30003168
b2b.prvalidation.password=p<password>
b2b.poexport.identity=30003168
b2b.poexport.password=poHus7yt3st
b2b.custom.field.identity=30003168
b2b.custom.field.password=<password>
b2b.supplier.sync.identity=30003168
b2b.supplier.sync.password=<password>
b2b.invoice.export.identity=30003168
b2b.invoice.export.password=<password>
b2b.invoice.status.identity=30003168
b2b.invoice.status.password=<password>
b2b.user.identity=30003168
b2b.user.password=<password>
b2b.requisition.identity=30003168
b2b.requisition.password=<password>
b2b.poimport.identity=30003168
b2b.poimport.password=t3stUc0NPOn

b2b.test.requisition.identity=30003168
b2b.test.requisition.password=<password>
b2b.test.poimport.identity=30003168
b2b.test.poimport.password=<password>

b2b.test.prvalidation.identity=30003168
b2b.test.prvalidation.password=<password>
b2b.test.custom.field.identity=30003168
b2b.test.custom.field.password=<password>
b2b.test.supplier.sync.identity=30003168
b2b.test.supplier.sync.password=<password>
b2b.test.invoice.status.identity=30003168
b2b.test.invoice.status.password=<password>
b2b.test.invoice.export.identity=30003168
b2b.test.invoice.export.password=<password>
b2b.test.poexport.identity=30003168
b2b.test.poexport.password=<password>
b2b.test.user.identity=30003168
b2b.test.user.password=<password>
 
aim.test.api.identity=POSERVICES
aim.test.api.password=<password>
 
unifier.test.api.identity=wslogin
unifier.test.api.password=<password>


aim.test.api.identity=POSERVICES
aim.test.api.password=<password>
aim.api.identity=${aim.test.api.identity}
aim.api.password=${aim.test.api.password}

unifier.test.api.identity=wslogin
unifier.test.api.password=<password>
unifier.api.identity=${unifier.test.api.identity}
unifier.api.password=${unifier.test.api.password}


# concur gpg
concur.gpg.user.id=ConcurSolutions
concur.gpg.key.uid=ConcurSolutions (Integrations) <intadmin@concursolutions.com>

#uconn gpg
uconn.gpg.user.id=UConn-KFS
uconn.gpg.passphrase=<passphrase>

aeweb.travel.user=kfstravelapi
aeweb.travel.password=<password>
## sftp
concur.sftp.url=st.concursolutions.com
## test
concur.sftp.password=<password>
concur.sfpt.username=t0072856zkzm
## production
#concur.sftp.password=<password> 
#concur.sfpt.username=<username>

#concur oauth2
concur.oauth2.client.id=e2273aa8-5104-4108-8596-9e2a86dd699f
conocur.oauth2.client.secret=6099b67e-b3ca-4adc-8b26-de0c8b629238
concur.oauth2.user.name=webadmin@uconn.edu
concur.oauth2.password=<password>

#concur notify service
concur.notify.username=kfsconcur
concur.notify.password=<password>

The institutional-config.properties file

institutional-config.properties
uconn.build.number=${buildNumber} ${timestamp} UTC
uconn.institution.id=UCONN
bc.verson=${kfs.bc.version}
kuali.version=${kfs.version}


## modes for stand alone rice
core.mode=LOCAL
kew.mode=EMBEDDED
kim.mode=EMBEDDED
coreservice.mode=REMOTE
ken.mode=REMOTE
ksb.mode=REMOTE
location.mode=REMOTE

production.environment.code=prd

property.files=classpath:org/kuali/rice/krad/ApplicationResources.properties,classpath:org/kuali/rice/krad/KRAD-ApplicationResources.properties,classpath:org/kuali/rice/kew/ApplicationResources.properties,classpath:org/kuali/rice/ksb/ApplicationResources.properties,classpath:org/kuali/rice/kim/ApplicationResources.properties,classpath:org/kuali/rice/krms/ApplicationResources.properties,classpath:org/kuali/rice/core/web/cache/CacheApplicationResources.properties,classpath:org/kuali/kfs/coa/coa-resources.properties,classpath:org/kuali/kfs/fp/fp-resources.properties,classpath:org/kuali/kfs/gl/gl-resources.properties,classpath:org/kuali/kfs/pdp/pdp-resources.properties,classpath:org/kuali/kfs/sys/sys-resources.properties,classpath:org/kuali/kfs/sec/sec-resources.properties,classpath:org/kuali/kfs/vnd/vnd-resources.properties,classpath:org/kuali/kfs/module/ar/ar-resources.properties,classpath:org/kuali/kfs/module/bc/bc-resources.properties,classpath:org/kuali/kfs/module/cam/cam-resources.properties,classpath:org/kuali/kfs/module/cg/cg-resources.properties,classpath:org/kuali/kfs/module/ec/ec-resources.properties,classpath:org/kuali/kfs/module/ld/ld-resources.properties,classpath:org/kuali/kfs/module/external/kc/kc-resources.properties,classpath:org/kuali/kfs/module/purap/purap-resources.properties,classpath:edu/uconn/kuali/kfs/ApplicationResources.properties
property.test.files=classpath:test-configuration.properties
service.registry.url=ServiceRegistry.do
spring.source.files=classpath:org/kuali/rice/core/CommonSpringBeans.xml,\
    classpath:kfs-cache-config.xml,\
    classpath:spring-kfs-imported-rice-beans.xml,\
    classpath:spring-additional-rice-beans.xml,\
    classpath:org/kuali/kfs/sys/spring-sys.xml,\
    classpath:org/kuali/kfs/coa/spring-coa.xml,\
    classpath:org/kuali/kfs/fp/spring-fp.xml,\
    classpath:org/kuali/kfs/gl/spring-gl.xml,\
    classpath:org/kuali/kfs/pdp/spring-pdp.xml,\
    classpath:org/kuali/kfs/vnd/spring-vnd.xml,\
    classpath:org/kuali/kfs/sec/spring-sec.xml,\
    classpath:org/kuali/kfs/sec/spring-sec-gl-overrides.xml,\
    classpath:org/kuali/kfs/integration/spring-integration.xml,\
    classpath:org/kuali/kfs/module/cg/spring-cg.xml,\
    classpath:org/kuali/kfs/module/ar/spring-ar.xml,\
    classpath:org/kuali/kfs/module/purap/spring-purap.xml,\
    classpath:org/kuali/kfs/module/purap/spring-sec-purap-overrides.xml,\
    classpath:org/kuali/kfs/module/cam/spring-cam.xml,\
    classpath:org/kuali/kfs/module/ld/spring-ld.xml,\
    classpath:org/kuali/kfs/module/bc/spring-bc.xml,\
    classpath:org/kuali/kfs/module/ec/spring-ec.xml,\
    classpath:org/kuali/kfs/module/ld/spring-sec-ld-overrides.xml,\
    classpath:edu/uconn/kuali/kfs/coa/spring-coa.xml,\
    classpath:edu/uconn/kuali/kfs/cr/spring-cr.xml,\
    classpath:edu/uconn/kuali/kfs/fp/spring-fp.xml ,\
    classpath:edu/uconn/kuali/kfs/gl/spring-gl.xml ,\
    classpath:edu/uconn/kuali/kfs/module/ar/spring-ar.xml ,\
    classpath:edu/uconn/kuali/kfs/module/bc/spring-bc.xml,\
    classpath:edu/uconn/kuali/kfs/module/cam/spring-cam.xml ,\
    classpath:edu/uconn/kuali/kfs/module/cg/spring-cg.xml ,\
    classpath:edu/uconn/kuali/kfs/module/goe/spring-goe.xml ,\
    classpath:edu/uconn/kuali/kfs/module/ld/spring-ld.xml ,\
    classpath:edu/uconn/kuali/kfs/module/purap/spring-purap.xml,\
    classpath:edu/uconn/kuali/kfs/pdp/spring-pdp.xml ,\
    classpath:edu/uconn/kuali/kfs/pdp/spring-pdp-bottomline.xml ,\
    classpath:edu/uconn/kuali/kfs/prje/spring-prje.xml ,\
    classpath:edu/uconn/kuali/kfs/sec/spring-sec-gl-overrides.xml ,\
    classpath:edu/uconn/kuali/kfs/sec/spring-sec.xml ,\
    classpath:edu/uconn/kuali/kfs/sys/spring-sys.xml ,\
    classpath:edu/uconn/kuali/kfs/tax/spring-tax.xml ,\
    classpath:edu/uconn/kuali/kfs/vnd/spring-vnd.xml ,\
    classpath:edu/uconn/kuali/rice/config/UConnSpringBeans.xml, \
    classpath:edu/uconn/kuali/kfs/module/purap/huskybuy/spring-huskybuy.xml,\
    classpath:edu/uconn/kuali/kfs/integration/concur/spring-concur.xml , \
    classpath:org/kuali/rice/kim/config/KIMLdapSpringBeans.xml\

    ${javamelody.spring.file}
spring.test.files=classpath:org/kuali/kfs/sys/spring-test-env-beans.xml,classpath:org/kuali/kfs/sys/spring-sys-unit-test.xml,classpath:org/kuali/kfs/sys/spring-sys-test.xml,classpath:org/kuali/kfs/gl/spring-gl-test.xml,classpath:org/kuali/kfs/module/ar/spring-ar-test.xml,classpath:org/kuali/kfs/module/purap/spring-purap-test.xml,classpath:org/kuali/kfs/module/cam/spring-cam-test.xml

# Web File Configuration
kns.javascript.files=krad/plugins/jquery/jquery-1.6.3.js,krad/plugins/cookie/jquery.cookie.js,kr/scripts/core.js,kr/scripts/core-override.js,kr/scripts/dhtml.js,kr/scripts/my_common.js,kr/scripts/jscalendar-1.0/calendar.js,kr/scripts/jscalendar-1.0/lang/calendar-en.js,kr/scripts/jscalendar-1.0/calendar-setup.js,dwr/engine.js,dwr/util.js,dwr/interface/PersonService.js,kr/scripts/objectInfo.js,scripts/rice-overrides.js

portal.javascript.files=krad/plugins/jquery/jquery-1.6.3.js,krad/plugins/cookie/jquery.cookie.js,krad/plugins/scrollto/jquery.scrollTo-1.4.2-min.js,krad/plugins/blockUI/jquery.blockUI.js,kr/scripts/my_common.js,krad/plugins/easydrag/jquery.easydrag.js,krad/plugins/fancybox/jquery.fancybox-1.3.4.pack.js,krad/plugins/easing/jquery.easing-1.3.pack.js,krad/plugins/jgrowl/jquery.jgrowl.js,krad/scripts/portal.initialize.js,rice-portal/scripts/easyXDM/easyXDM.js
# Struts Configuration
rice.struts.message.resources=org.kuali.rice.krad.ApplicationResources,org.kuali.rice.krad.KRAD-ApplicationResources,org.kuali.rice.kew.ApplicationResources,org.kuali.rice.ksb.ApplicationResources,org.kuali.rice.kim.ApplicationResources,org.kuali.rice.krms.ApplicationResources,org.kuali.rice.core.web.cache.CacheApplicationResources,org.kuali.kfs.coa.coa-resources,org.kuali.kfs.fp.fp-resources,org.kuali.kfs.gl.gl-resources,org.kuali.kfs.pdp.pdp-resources,org.kuali.kfs.sys.sys-resources,org.kuali.kfs.vnd.vnd-resources,org.kuali.kfs.sec.sec-resources,org.kuali.kfs.module.ar.ar-resources,org.kuali.kfs.module.bc.bc-resources,org.kuali.kfs.module.cam.cam-resources,org.kuali.kfs.module.cg.cg-resources,org.kuali.kfs.module.ec.ec-resources,org.kuali.kfs.module.external.kc.kc-resources,org.kuali.kfs.module.ld.ld-resources,org.kuali.kfs.module.purap.purap-resources,edu.uconn.kuali.kfs.ApplicationResources

# the files that define the struts context for the struts module
rice.kfs.struts.config.files=/WEB-INF/struts-config.xml,/WEB-INF/uconn-struts-config.xml
# the files that define the kim struts context for the struts module
rice.kim.struts.config.files=/kim/WEB-INF/struts-config.xml,/kim/WEB-INF/uconn-struts-config.xml
# the files that define the kr struts context for the struts module
rice.kr.struts.config.files=/kr/WEB-INF/struts-config.xml,/kr/WEB-INF/uconn-kr-struts-config.xml

# properties for Action List notification
email.reminder.lifecycle.enabled=false
enable.nonproduction.data.unmasking=true

# Logging/Debugging Properties
memory.monitor.threshold=.85

# KSB Properties
message.persistence=true
message.delivery=async
threadPool.size=20
RouteQueue.maxRetryAttempts=3
RouteQueue.timeIncrement=1000
kim.callback.service.bus.security.enabled=true
kew.callback.service.bus.security.enabled=true
cache.service.bus.security.enabled=true
soap.service.default.service.bus.security.enabled=true

# quartz properties
useQuartzDatabase=false
use.quartz.scheduling=true
use.quartz.jdbc.jobstore=false
batch.schedule.cron.expression=00 00 23 ? * *
batch.quartz.thread.pool.size=8
batch.quartz.trigger.check.interval=30000

batch.quartz.thread.pool.size=8
batch.quartz.trigger.check.interval=30000
skip.batch.directory.initiation=false
#
bus.refresh.rate=120
rice.cxf.client.connectionTimeout=30000
rice.cxf.client.receiveTimeout=120000
rice.cxf.client.allowChunking=false

# KEW Properties
rice.kew.enableKENNotification=false
actionlist.outbox=false
data.xml.pollIntervalSecs=30
initialDelaySecs=60
secure.workflowdocument.javaservice.endpoint=true
secure.workflowutility.javaservice.endpoint=true
secure.workflowutility.soapservice.endpoint=true
simpleDocumentActionsService.security=true
Routing.ImmediateExceptionRouting=true

dailyEmail.active=false
weeklyEmail.active=false
dailyEmail.cronExpression=0 0 1 * * ?
weeklyEmail.cronExpression=0 0 2 ? * 2

# rice properties
rice.kew.ignoreUnknownPrincipalIds=true
rice.core.additionalSpringFiles=
rice.coreservice.additionalSpringFiles=
rice.kr.additionalSpringFiles=classpath:spring-rice-krad-overrides.xml,classpath:edu/uconn/kuali/rice/config/UConnKrOverrideSpringBeans.xml
rice.kim.additionalSpringFiles=classpath:org/kuali/rice/kim/config/KIMLdapSpringBeans.xml
rice.kew.additionalSpringFiles=classpath:edu/uconn/kuali/rice/config/UConnKewOverrideSpringBeans.xml
#,classpath:org/kuali/rice/kew/config/KewEmbeddedSpringBeans.xml
rice.ksb.additionalSpringFiles=classpath:edu/uconn/kuali/rice/config/UConnKsbOverrideSpringBeans.xml
rice.location.additionalSpringFiles=
rice.kim.entityTitleLength=20
uconn.ldap.dept.cd.length=4

encrypt.attributes.properties.file=work/db/fieldsToEncrypt.properties

# this is a custom UConn property needed for running batch jobs via Control-M
job.status.directory=/home/kfsctmuser

jaggaer.role.approver=Approver
jaggaer.role.shopper=Shopper
jaggaer.dynamic.approvers=KFS-CAM:CAM Manager;KFS-SYS:Contracts & Grants Processor
jaggaer.urn=urn:sciquest.com:solutions.sciquest.com:
jaggaer.urn.role.identifier=role:

# additional parameters 
organization.types=Division=4;VP Cabinet=5;AVP Dean=6;Discipline/Grouping=7;Department=8;Sub-Department 1=9;Sub-Department 2=T
organization.type.xref=executive=Division;unit=VP Cabinet,AVP Dean,Discipline/Grouping;department=Department,Sub-Department 1,Sub-Department 2

# additional css files that should be available to every non-portal page in the application
institution.css.files=,css/uconn.css

# maintenance conversin upgrade rules
maintainable.conversion.rule.file=classpath:edu/uconn/kuali/kfs/sys/config/MaintainableXMLUpgradeRules.xml


# Default Option for Action List User Perferences.
userOptions.default.color=white
# email options: no, daily, weekly, immediate
userOptions.default.email=immediate
userOptions.default.notifyPrimary=yes
userOptions.default.notifySecondary=no
userOptions.default.openNewWindow=yes
userOptions.default.actionListSize=10
userOptions.default.refreshRate=15
userOptions.default.showActionRequired=yes
userOptions.default.showDateCreated=yes
userOptions.default.showDocumentType=yes
userOptions.default.showDocumentStatus=yes
userOptions.default.showInitiator=yes
userOptions.default.showDelegator=yes
userOptions.default.showTitle=yes
userOptions.default.showWorkgroupRequest=yes
userOptions.default.showClearFYI=yes
userOptions.default.showLastApprovedDate=no
userOptions.default.showCurrentNode=no
userOptions.default.useOutBox=yes

# delegatorFilterOnActionList: "Secondary Delegators on Action List Page" or "Secondary Delegators only on Filter Page"
userOptions.default.delegatorFilterOnActionList=Secondary Delegators on Action List Page
# primaryDelegatorFilterOnActionList: "Primary Delegates on Action List Page" or "Primary Delegates only on Filter Page"
userOptions.default.primaryDelegatorFilterOnActionList=Primary Delegates on Action List Page

http.session.timeout.minutes=90

# Testing-only Properties
core.spring.source.files=classpath:spring-kfs-imported-rice-beans.xml,classpath:spring-additional-rice-beans.xml,classpath:org/kuali/rice/core/CommonSpringBeans.xml,classpath:kfs-cache-config.xml,classpath:org/kuali/kfs/sys/spring-sys.xml,classpath:org/kuali/kfs/coa/spring-coa.xml,classpath:org/kuali/kfs/fp/spring-fp.xml,classpath:org/kuali/kfs/gl/spring-gl.xml,classpath:org/kuali/kfs/pdp/spring-pdp.xml,classpath:org/kuali/kfs/vnd/spring-vnd.xml
core.spring.test.files=classpath:org/kuali/kfs/sys/spring-test-env-beans.xml,classpath:org/kuali/kfs/sys/spring-sys-unit-test.xml,classpath:org/kuali/kfs/sys/spring-sys-test.xml,classpath:org/kuali/kfs/gl/spring-gl-test.xml

integration.spring.files=,classpath:org/kuali/kfs/integration/spring-integration.xml

# Web-services enable/disable
accountCreationServiceSOAP.expose=false

 # uconn specific
uconn.routing.departmentRole=Derived Role: UConn Dept Head
uconn.routing.unitRole=Derived Role: UConn Unit Head
uconn.routing.execRole=Derived Role: UConn Exec Head
uconn.routing.univHeadRole=Derived Role: UConn University Head
uconn.routing.subDeptRole=Derived Role: UConn SubDept Head
uconn.workflow.viewerRole=Derived Role: UConn Workflow Document Viewer
uconn.workflow.subDeptViewerRole=Derived Role: UConn SubDept Workflow Document Viewer
uconn.workflow.deptViewerRole=Derived Role: UConn Dept Workflow Document Viewer
uconn.workflow.unitViewerRole=Derived Role: UConn Unit Workflow Document Viewer
uconn.workflow.execViewerRole=Derived Role: UConn Exec Workflow Document Viewer

unifier.production.api.url=https://opunib.grove.ad.uconn.edu/UWS
unifier.test.api.url=https://puint.grove.ad.uconn.edu/UnifierWS

aim.production.api.url=http://thebroker.uconn.edu:8080/AiMIntegrationBrokerWS/wsdl/PurchaseOrderWebServiceImpl.wsdl
aim.test.api.url=http://thebrokertest.uconn.edu:8080/AiMIntegrationBrokerWS/wsdl/PurchaseOrderWebServiceImpl.wsdl

#Jaggaer Huskybuy url properties.
b2b.test.prvalidation.url=https://usertest-messages.sciquest.com/apps/Router/PRValidationReceive
b2b.production.prvalidation.url=https://integrations.sciquest.com/apps/Router/PRValidationReceive
b2b.test.custom.field.url=https://usertest-messages.sciquest.com/apps/Router/CustomFieldXMLImport
b2b.production.custom.field.url=https://integrations.sciquest.com/apps/Router/CustomFieldXMLImport
b2b.test.supplier.sync.url=https://usertest-messages.sciquest.com/apps/Router/TSMSupplierXMLImport
b2b.production.supplier.sync.url=https://integrations.sciquest.com/apps/Router/TSMSupplierXMLImport
b2b.test.invoice.status.url=https://usertest-messages.sciquest.com/apps/Router/InvoiceStatusMessage
b2b.production.invoice.status.url=https://integrations.sciquest.com/apps/Router/InvoiceStatusMessage
b2b.test.user.url=https://usertest-messages.sciquest.com/apps/Router/OrgUserImport
b2b.production.user.url=https://integrations.sciquest.com/apps/Router/OrgUserImport
b2b.test.requisition.url=https://usertest-messages.sciquest.com/apps/Router/PRXMLImport
b2b.production.requisition.url=https://integrations.sciquest.com/apps/Router/PRXMLImport
b2b.test.jaggaer.url=https://usertest.sciquest.com/apps/Router/SAMLAuth/UConnFullSuite
b2b.production.jaggaer.url=https://solutions.sciquest.com/apps/Router/SAMLAuth/UConnFullSuite



Post Deployment

XML Ingestion

From KFS menu System >> Rice >> Administration → Workflow >> XML Ingester

Upload the following files

  • /uconn/upgrade-kfs7/workflow/FINI-5084.xml
  • /uconn/upgrade-kfs7/workflow/FINI-5135.xml
  • /uconn/upgrade-kfs7/workflow/FINI-5989.xml
  • /uconn/upgrade-kfs7/workflow/FINI-443.xml
  • /uconn/upgrade-kfs7/workflow/FINI-5164.xml
  • /uconn/upgrade-kfs7/workflow/FINI-5237.xml
  • /uconn/upgrade-kfs7/workflow/FINI-5331.xml
  • uconn/upgrade-kfs7/workflow/KS-PS-455-CLOS.xml
  • uconn/upgrade-kfs7/workflow/KS-PS-455-INST.xml


From KFS menu Syatem >> Institutional Configuration → Branding → click box "Drag & drop logo here or click to select a logo to upload." and navigate to /uconn-kfs/uconn/upgrade-kfs7/uconn-wordmark-side-blue-gray.png and click "Open". Logo will appear in "Branding" box...click "Apply".


Message of the day

From KFS menu Syatem >> Institutional Configuration → Message of the Day

Click Edit and handle as you would any maintainence document.


Navigate to your name on side bar and click "Refresh Navigation"


Workflow client - Dependent Tuition Waiver

Due to the separation of Rice and KFS to separate Tomcat instances the WSDLs in the config file must change to reflect the Rice server url

   <!-- production -->
	<param name="application.url">https://prd.aeweb.uconn.edu/dtw</param>
    <param name="encryption.key">7IC64w6ksLU</param>
    <param name="keystore.alias">rice</param>
    <param name="keystore.file">/srv/uconn_configs/rice-config/rice.keystore</param>
    <param name="keystore.password">r1c3pw</param>
    <param name="clientapp.environment">dev</param>
    <param name="production.environment.code">prd</param>
    <param name="dtw.export.file.path">/home/dtw/</param>

    <param name="engine.url">https://kualinp.uconn.edu/kr-prd</param>

    <!--  https://kualinp.uconn.edu/kfs-updev/remoting  -->
    <!-- externalized configuration for worklow -->
    <param name="group.srvc.wsdl">https://kuali.uconn.edu/kr-prd/remoting/soap/kim/v2_0/groupService?wsdl</param>
    <param name="role.srvc.wsdl">https://kuali.uconn.edu/kr-prd/remoting/soap/kim/v2_0/roleService?wsdl</param>
 
    <param name="workflow.srvc.wsdl">https://kuali.uconn.edu/kr-prd//remoting/soap/uconn/v2_0/ucWorkFlowWsService?wsdl</param>
    <param name="ldap.srvc.wsdl">https://kuali.uconn.edu/kr-prd/remoting/soap/uconn/v2_0/uconnLdapService?wsdl</param>
    <param name="mud.srvc.wsdl">https://kuali.uconn.edu/kr-prd/remoting/soap/uconn/v2_0/ucMudOrgWsService?wsdl</param> 
	
    <param name="mail.smtp.host">smtp.uconn.edu</param>
    <param name="mail.prop.name">mail.smtp.host</param>
    <param name="mail.from.addr">noreply@uconn.edu</param>

</config



  • No labels