...
...
...
...
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.
Info |
---|
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
...
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
Update liquibase.properties file with appropriate url, username and password
Run rice-runlog.sh to use liquibase to perform the updates.
/kfs
Update liquibase.properties file with appropriate url, user and password
- Replace [env] in kfs/core/core-services-cf.sql with appropriate environment
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.
Info |
---|
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)
...
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
Code Block | ||||
---|---|---|---|---|
| ||||
<!-- 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">r1c3pw</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> |
...
Code Block | ||
---|---|---|
| ||
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
...
Code Block | ||||
---|---|---|---|---|
| ||||
#!/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.
...
Code Block | ||
---|---|---|
| ||
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
It is necessary to