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
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.
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
<!-- 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>
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
- dbscripts
- 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
- adp
- scriptRunner
- reports
- ar
- bc
- cab
- cam
- cg
- coa
- cr
- ec
- endow
- fp
- gl
- ld
- pdp
- pmw
- prje
- purap
- sys
- tax
- vnd
- attachments
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.
#!/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
#!/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.
######################################## # External Configuration Properties # ######################################## ## apis.enabled determines whether REST APIs are accessible from an outside client apis.enabled=true app.code=kfs environment=<environment> appserver.url=<base url> 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 uconn.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 staging.directory.sys.batchContainer=${staging.directory}/sys/batchContainer reports.directory=${work.directory}/reports security.property.file=file:/srv/uconn_configs/kfs-config/security/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=${base.directory}/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 #rice directories rice.config.directory=/srv/uconn_configs security.directory=${rice.config.directory} settings.directory=${rice.config.directory} 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 # set batch mode to false and kfs will publish services rice.ksb.batch.mode=false # # rice properties # rice.appserver.url=<base url> context.names.rice=kr-<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/ # 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.backLocation.default.url=${application.url} rice.portal.allowed.regex=^${application.url}(/.*|)|^${rice.server.url}(/.*|) rice.backLocation.allowed.regex=^(${application.url}|${rice.url}|${appserver.url})(/.*|) ## use below for local ## rice.backLocation.allowed.regex=^(http://localhost:8080/${context.names.kfs}|${rice.server.url}|http://localhost:8080.*)(/.*|) #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 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} rice.ksb.web.forceEnable=false 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 rice.ldapattr.personEntitlement=eduPersonEntitlement rice.ldap.search.limit=5000 rice.ldap.ids.to.skip=2,KFS2,kr,kfs,admin,notsys 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 userOptions.default.emailAgingNotification3=30 days # 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 unifier.api.url=${unifier.test.api.url} # 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 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} # # 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=kFs@Scri9t3 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.production.api.url=http://thebrokerdev.uconn.edu:8080/AiMIntegrationBrokerWS/wsdl/PurchaseOrderWebServiceImpl.wsdl aim.test.api.url=http://thebrokerdev.uconn.edu:8080/AiMIntegrationBrokerWS/wsdl/PurchaseOrderWebServiceImpl.wsd aim.api.url=${aim.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
######################################## # 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=@5P3!ftSUVtq #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
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