Production Configuration
This page lists configuration setup that would be suitable for Production
Properties
Loading
Property files are loaded in the following order by org.kuali.kfs.sys.context.PropertyLoadingFactoryBean
- classpath:kfs-default-config.properties
- classpath:kfs-rice-default-config.properties
- classpath:kfs-security-default-config.properties
classpath:institutional-config.properties
- files specified via -Dadditional.kfs.config.locations
- files specified via -Dadditional.kfs.test.config.locations
Configuration
institutional-config.properties
This configuration point is used for common configuration across all institutionally hosted environments. This file would reside in src/main/resources of your maven overlay
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:spring-kfs-batch.xml,\ classpath:org/kuali/kfs/integration/spring-integration.xml,\ classpath:org/kuali/kfs/module/ec/spring-ec.xml,\ classpath:org/kuali/kfs/module/ld/spring-ld.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/cam/spring-cam.xml,\ classpath:org/kuali/kfs/module/cab/spring-cab.xml,\ classpath:org/kuali/kfs/sec/spring-sec.xml,\ classpath:org/kuali/kfs/sec/spring-sec-gl-overrides.xml,\ classpath:org/kuali/kfs/module/ld/spring-sec-ld-overrides.xml,\ classpath:org/kuali/kfs/sys/spring-dev-env-beans.xml,\ classpath:com/rsmart/kuali/kfs/sec/spring-sec.xml,\ classpath:com/rsmart/kuali/kfs/module/purap/spring-purap.xml,\ classpath:com/rsmart/kuali/kfs/fp/spring-fp.xml,\ classpath:com/rsmart/kuali/kfs/sys/spring-sys.xml,\ classpath:com/rsmart/kuali/kfs/cr/spring-cr.xml,\ classpath:com/rsmart/kuali/kfs/gl/spring-gl.xml,\ classpath:com/rsmart/kuali/kfs/coa/spring-coa.xml,\ classpath:com/rsmart/kuali/kfs/module/ld/spring-ld.xml,\ classpath:com/rsmart/kuali/kfs/pdp/spring-pdp.xml,\ classpath:com/rsmart/kuali/kfs/module/cg/spring-cg.xml,\ classpath:com/rsmart/kuali/kfs/module/cam/spring-cam.xml,\ classpath:com/rsmart/kuali/kfs/module/ec/spring-ec.xml,\ classpath:com/rsmart/kuali/kfs/module/ar/spring-ar.xml,\ #overrides for Access Security classpath:edu/institute/kuali/kfs/sec/spring-sec.xml,\ classpath:edu/institute/kuali/kfs/sec/spring-sec-gl-overrides.xml,\ classpath:kfs-RiceJTASpringBeans.xml,\ classpath:kfs-RiceDataSourceSpringBeans.xml spring.test.files=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 # contains overrides for implementation of encryptionService rice.core.additionalSpringFiles=classpath:com/rsmart/kuali/spring-kfs-rice-core-overrides.xml # contains overrides for implementation of encryptionService rice.kr.additionalSpringFiles=classpath:spring-rice-krad-overrides.xml,\ classpath:org/kuali/kfs/sec/spring-sec-rice-overrides.xml,\ classpath:com/rsmart/kuali/spring-kfs-rice-krad-overrides.xml module.access.security.enabled=true 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/vnd/vnd-resources.properties,\ classpath:org/kuali/kfs/module/ar/ar-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:rsmartApplicationResources.properties,\ classpath:org/kuali/kfs/sec/sec-resources.properties 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.module.ar.ar-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,\ org.kuali.kfs.sec.sec-resources,\ rsmartApplicationResources app.code=fin environment= app.context.name=fin rice.ksb.registry.serviceUrl=${rice.url}/remoting/soap/ksb/v2_0/serviceRegistry rice.ksb.web.forceEnable=true # Do not run batch on weekends batch.schedule.cron.expression=00 00 23 ? * SUN-THU # except for a job that we need to run on Friday as well batch.schedule.sixDay.cron.expression=00 00 23 ? * SUN-FRI useQuartzDatabase=false context.names.rice=rice login.filter.className=co.kuali.core.auth.web.CoreAuthenticationFilter login.filter.param.authConfigurationClass=org.kuali.kfs.sys.web.filter.CoreAuthenticationFilterConfiguration updateDatabaseOnStartup=true
kfs.properties (-Dadditional.kfs.config.locations)
This configuration point is used for individual machines
# overrides for instance specific configuration (urls mostly) environment=prd base.url=https://institute.kuali.co application.url=https://institute.kuali.co/fin appserver.url=https://institute.kuali.co rice.server.url=https://institute.kuali.co/rice rice.url=https://institute.kuali.co/rice rice.ksb.registry.serviceUrl=http://${rice.url}/remoting/soap/ksb/v2_0/serviceRegistry base.directory=/data/fin/kfs logs.directory=${base.directory}/logs/${app.code} work.directory=${base.directory}/work/${app.code} keystore.file=/app/fin/kfs/app/tomcat/conf/rice.keystore security.property.file=file:/app/fin/kfs/app/tomcat/conf/security.properties log4j.settings.file=/app/fin/kfs/app/tomcat/conf/log4j.properties core.authentication.filter.authBaseUrl=https://institute.kuali.co # example of disabling db update on startup for a single environment updateDatabaseOnStartup=false b2b.environment=Production b2b.purchase.order.url=https://solutions.sciquest.com/apps/Router/POXMLImport b2b.punch.back.url=${application.url}/b2b.do?methodToCall=returnFromShopping b2b.punch.out.url=https://solutions.sciquest.com/apps/Router/ExternalAuth/cXML/institute mailing.list.batch=kfs.batch.institute@kuali.co
Here is a sample configuration for custom analytics provider:
web.analytics.enabled=true web.analytics.key=[key] # the entire script must be on a single line -- make sure to adjust JS appropriately web.analytics.tag=<script type='text/javascript'> !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics};};for(var t=0;t<analytics.methods.length;t++){var e = analytics.methods[t];analytics[e] = analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="4.0.0";analytics.load('${web.analytics.key}');analytics.page();}}();</script>
security.properties
kfs.datasource.username=[username1] kfs.datasource.password=[password1] kfs.datasource.url=[URL1] kfs.datasource.pool.maxActive=200 kfs.datasource.pool.maxSize=200 #used by liquirelational kfs.datasource.ddl.username=[username2] kfs.datasource.ddl.password=[password2] kfs.datasource.ddl.url=[URL2] rice.datasource.url=[URL3] rice.datasource.username=[username3] rice.datasource.password=[password3] rice.datasource.pool.maxActive=200 rice.datasource.pool.maxSize=200 #used by liquirelational rice.datasource.ddl.url=[URL4] rice.datasource.ddl.username=[username4] rice.datasource.ddl.password=[password4] keystore.alias=rice keystore.password=[something really secure here!] encryption.key=[something else really secure here!] # configure only if the environment will be connected to Sciquest b2b.user.agent=Institute b2b.purchase.order.identity=[identity1] b2b.purchase.order.password=[password1] b2b.shopping.identity=[identity2] b2b.shopping.password=[password2] # override this property if using Sciquest csrf.exempt.paths=b2b.do
Struts Configuration
On startup, KFS looks for a file in WEB-INF/ called institutional-struts-config.xml. This file would reside in src/main/webapp/WEB-INF of your maven overlay
<?xml version="1.0" encoding="ISO-8859-1" ?> <!-- - The Kuali Financial System, a comprehensive financial management system for higher education. - - Copyright 2005-2017 Kuali, Inc. - - 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/>. --> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <data-sources /> <form-beans> <!-- Rice Bean Definitions : This is a bean declared in Rice, but is needed throughout this config --> <form-bean name="KualiForm" type="org.kuali.kfs.kns.web.struts.form.KualiForm" /> <!-- CR Form --> <form-bean name="CheckReconciliationReportForm" type="com.rsmart.kuali.kfs.cr.document.web.struts.CheckReconciliationReportForm" /> <!-- Balance Inquiry Form --> <form-bean name="BalanceInquiryForm" type="com.rsmart.kuali.kfs.gl.web.struts.BalanceInquiryForm" /> <!-- PURAP Forms --> <form-bean name="PurchaseOrderForm" type="com.rsmart.kuali.kfs.module.purap.web.struts.PurchaseOrderForm" /> <form-bean name="RequisitionForm" type="org.kuali.kfs.module.purap.document.web.struts.RequisitionForm" /> <!-- eThority Form --> <form-bean name="EThorityForm" type="com.rsmart.kuali.kfs.sys.web.struts.EThorityForm" /> <form-bean name="PcardDistributionForm" type="com.rsmart.kuali.kfs.fp.document.web.struts.PcardDistributionForm" /> <form-bean name="B2BForm" type="org.kuali.kfs.module.purap.web.struts.B2BForm" /> </form-beans> <action-mappings> <action path="/cr*" name="{1}Form" input="/jsp/modules/cr/{1}.jsp" type="com.rsmart.kuali.kfs.cr.document.web.struts.{1}Action" scope="request" parameter="methodToCall" validate="true" attribute="KualiForm"> <set-property property="cancellable" value="true" /> <forward name="basic" path="/jsp/module/cr/{1}.jsp" /> </action> <action path="/eThority" name="EThorityForm" scope="request" attribute="KualiForm" parameter="methodToCall" type="com.rsmart.kuali.kfs.sys.web.struts.EThorityAction"> <forward name="basic" path="/jsp/sys/EThority.jsp" /> </action> <action path="/financialPcardDistribution" name="PcardDistributionForm" input="/jsp/fp/PcardDistribution.jsp" type="com.rsmart.kuali.kfs.fp.document.web.struts.PcardDistributionAction" scope="request" parameter="methodToCall" validate="true" attribute="KualiForm"> <set-property property="cancellable" value="true" /> <forward name="basic" path="/jsp/fp/PcardDistribution.jsp" /> </action> <action path="/glModifiedInquiry" name="BalanceInquiryForm" scope="request" attribute="KualiForm" parameter="methodToCall" type="com.rsmart.kuali.kfs.gl.web.struts.BalanceInquiryAction"> <set-property property="cancellable" value="true" /> <forward name="basic" path="/jsp/gl/ModifiedInquiry.jsp" /> <forward name="accountBalance" path="/jsp/gl/AccountBalanceModifiedInquiry.jsp" /> </action> <action path="/purapPurchaseOrder" name="PurchaseOrderForm" input="/jsp/module/purap/PurchaseOrder.jsp" type="org.kuali.kfs.module.purap.document.web.struts.PurchaseOrderAction" scope="request" parameter="methodToCall" validate="true" attribute="KualiForm"> <set-property property="cancellable" value="true" /> <forward name="basic" path="/jsp/module/purap/PurchaseOrder.jsp" /> <forward name="printPurchaseOrderPDF" path="/jsp/module/purap/PrintForward.jsp" redirect="false" /> <forward name="retransmitPurchaseOrderPDF" path="/jsp/module/purap/RetransmitForward.jsp" redirect="false" /> <forward name="printReceivingTicketPDF" path="/jsp/module/purap/ReceivingTicketForward.jsp" redirect="false" /> <forward name="printPOQuoteListPDF" path="/jsp/module/purap/PrintPOQuoteListForward.jsp" redirect="false" /> </action> <action path="/purapRequisition" name="RequisitionForm" input="/jsp/module/purap/Requisition.jsp" type="com.rsmart.kuali.kfs.module.purap.document.web.struts.RequisitionAction" scope="request" parameter="methodToCall" validate="true" attribute="KualiForm"> <set-property property="cancellable" value="true" /> <forward name="basic" path="/jsp/module/purap/Requisition.jsp" /> <forward name="printPurchaseOrderPDF" path="/jsp/module/purap/PrintForward.jsp" redirect="false" /> <forward name="retransmitPurchaseOrderPDF" path="/jsp/module/purap/RetransmitForward.jsp" redirect="false" /> <forward name="printReceivingTicketPDF" path="/jsp/module/purap/ReceivingTicketForward.jsp" redirect="false" /> <forward name="printPOQuoteListPDF" path="/jsp/module/purap/PrintPOQuoteListForward.jsp" redirect="false" /> </action> <action path="/b2b" name="B2BForm" scope="request" attribute="KualiForm" parameter="methodToCall" type="com.rsmart.kuali.kfs.module.purap.web.struts.B2BAction"> <forward name="basic" path="/jsp/module/purap/ShopCatalogs.jsp" /> <forward name="removeframe" path="/jsp/module/purap/ShopRemoveFrame.jsp" /> <forward name="failure" path="/requisition/requisitionFailure.jsp" /> <forward name="invalid" path="/requisition/shopFail.jsp" /> </action> </action-mappings> </struts-config>
Monitoring
To fill in with info on: https://monsters-tst.kuali.co/fin/health/check?detail=true