All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dent.lum.ks-lum-ui.1.1.source-code.lum-orchestration-dictionary.xml Maven / Gradle / Ivy

There is a newer version: 2.0.3-cm
Show newest version
<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2010 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.osedu.org/licenses/ECL-2.0

    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.

-->
<!--
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING

Please do not update this anymore it is obsolete and should no longer be used
to configure searches please update lum-ui-lookup-context.xml instead


Questions please contact Norm Wright.





-->
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

	<bean id="constraint" abstract="true"
		class="org.kuali.student.core.assembly.data.ConstraintMetadata" />
	<bean id="lookup" abstract="true"
		class="org.kuali.student.core.assembly.data.LookupMetadata" />
	<bean id="dataObjectStructure" abstract="true"
		class="org.kuali.student.core.assembly.dictionary.old.DataObjectStructure" />
	<bean id="dataFieldDescriptor" abstract="true"
		class="org.kuali.student.core.assembly.dictionary.old.DataFieldDescriptor">
		<property name="writeAccess" value="ALWAYS" />
		<property name="canUnmask" value="false" />
		<property name="canEdit" value="true" />
		<property name="canView" value="true" />
		<property name="onChangeRefreshMetadata" value="false" />
	</bean>
	<bean id="param" abstract="true"
		class="org.kuali.student.core.assembly.data.LookupParamMetadata" />
	<bean id="result" abstract="true"
		class="org.kuali.student.core.assembly.data.LookupResultMetadata" />
	<bean id="lookupQos" abstract="true"
		class="org.kuali.student.core.assembly.data.LookupQosMetadata" />
	<bean id="datatype.StringValue" abstract="true"
		class="org.kuali.student.core.assembly.data.Data$StringValue" />


	<bean id="constraint.defaultVarCharLength" parent="constraint">
		<property name="id" value="defaultVarCharLength"/>
		<property name="desc" value="Must be less than 256 characters" />
		<property name="maxLength" value="255" />
	</bean>
	<bean id="constraint.defaultLongVarCharLength" parent="constraint">
		<property name="id" value="defaultVarCharLength"/>
		<property name="desc" value="Must be less than 2000 characters" />
		<property name="maxLength" value="1999" />
	</bean>
	<bean id="constraint.atp.in.future" parent="constraint">
		<property name="id" value="atp.in.future" />
		<!--<property name="messageId" value="kuali.msg.validation.atp.not.in.future" />-->
		<property name="desc" value="The ATP must start in the future" />
		<property name="serverSide" value="true" />
		<property name="specialValidator"
			value="org.kuali.student.core.atp.validation.FutureATPValidatorValidator" />
	</bean>
	<bean id="constraint.atp.types" parent="constraint">
		<property name="id" value="atp.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured  time period types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.available.course.numbers" parent="constraint">
		<property name="id" value="available.course.numbers" />
		<!--<property name="messageId" value="kuali.msg.validation.not.an.enumerated.list" />-->
		<property name="desc"
			value="In list of configured available course numbers" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="3" />
		<property name="maxLength" value="3" />
		<property name="validChars" value="regex:[0-9]*" />
	</bean>
	<bean id="constraint.calc.authenicated.principalId" parent="constraint">
		<property name="id" value="calc.authenicated.principalId" />
		<property name="desc"
			value="Sets a field to the currently authenticated user" />
		<property name="serverSide" value="true" />
		<property name="comments"
			value="How do we know who the real user is when a service calls another service?" />
		<property name="specialValidator"
			value="org.kuali.student.core.auth.calculation.AuthenticatedPrincipalCalculator" />
	</bean>
	<bean id="constraint.calc.copy.course.official.numberPart" parent="constraint">
		<property name="id" value="calc.copy.course.official.numberPart" />
		<property name="desc"
			value="Same value as the value of the course.official.numberPart field" />
		<property name="serverSide" value="true" />
		<property name="comments"
			value="Not sure how to implement this copy operation or invoke it every time the official course no gets updated" />
		<property name="specialValidator"
			value="org.kuali.student.lum.lu.calculation.CopyOfficialCourseNumberPartCalculator" />
	</bean>
	<bean id="constraint.calc.copy.course.official.subjectArea"
		parent="constraint">
		<property name="id" value="calc.copy.course.official.subjectArea" />
		<property name="desc"
			value="Same value as the value of the course.official.subjectArea field" />
		<property name="serverSide" value="true" />
		<property name="comments"
			value="Not sure how to implement this copy operation or invoke it every time the official course no gets updated" />
		<property name="specialValidator"
			value="org.kuali.student.lum.lu.calculation.CopyOfficialCourseSubjectAreaCalculator" />
	</bean>
	<bean id="constraint.calc.meta.versionInd" parent="constraint">
		<property name="id" value="calc.meta.versionInd" />
		<property name="desc"
			value="Calculates the version indicator that is used for optimistic locking" />
		<property name="serverSide" value="true" />
		<property name="comments"
			value="This could be as simple as a nano-second date-time stamp of the last update or a sequence number of the object that gets incremented on each update or some other more complex computation." />
		<property name="specialValidator"
			value="org.kuali.student.core.calculationVersionIndCalculator" />
	</bean>
	<bean id="constraint.calc.now" parent="constraint">
		<property name="id" value="calc.now" />
		<property name="desc" value="Sets a field to the current time" />
		<property name="serverSide" value="true" />
		<property name="comments" value="Worry about timezone issues" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.NowCalculator" />
	</bean>
	<bean id="constraint.code" parent="constraint">
		<property name="id" value="code" />
		<!--<property name="messageId" value="kuali.msg.validation.code" />-->
		<property name="desc" value="Alphanumeric code, hypen and period." />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="validChars" value="regex:[A-Za-z0-9.\-]*" />
	</bean>
	<bean id="constraint.code.uppercase" parent="constraint">
		<property name="id" value="code.uppercase" />
		<!--<property name="messageId" value="kuali.msg.validation.uppercase" />-->
		<property name="desc"
			value="uppercase alphanumeric code, hypen and period." />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="validChars" value="regex:[A-Z0-9.\-]*" />
	</bean>
	<bean id="constraint.course.proposal.types" parent="constraint">
		<property name="id" value="course.proposal.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc"
			value="In a list of configured course proposal types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="comments" value="TO DO: add to SimpleS" />
	</bean>
	<bean id="constraint.date.time" parent="constraint">
		<property name="id" value="date.time" />
		<!--<property name="messageId" value="kuali.msg.validation.date.time" />-->
		<property name="desc" value="Date-Time" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="19" />
		<property name="maxLength" value="19" />
		<property name="comments"
			value="http://regexlib.com/REDetails.aspx?regexp_id=1966 (but not sure)" />
	</bean>
	<bean id="constraint.decimal" parent="constraint">
		<property name="id" value="decimal" />
		<!--<property name="messageId" value="kuali.msg.validation.decimal" />-->
		<property name="desc" value="decimal number" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="10" />
		<property name="validChars" value="regex:^[-+]?[0-9]+(\.[0-9]+)?$" />
		<property name="comments"
			value="http://regexlib.com/REDetails.aspx?regexp_id=117" />
	</bean>
	<bean id="constraint.default.authenicated.principalId" parent="constraint">
		<property name="id" value="default.authenicated.principalId" />
		<property name="desc" value="Defaults to the currently authenticated user" />
		<property name="serverSide" value="true" />
		<property name="comments"
			value="How do we know who the real user is when a service calls another service?" />
	</bean>
	<bean id="constraint.default.now" parent="constraint">
		<property name="id" value="default.now" />
		<property name="desc" value="Defaults to NOW, when the object is created" />
		<property name="serverSide" value="true" />
		<property name="comments" value="Not sure how to implement defaults" />
	</bean>
	<bean id="constraint.default.today" parent="constraint">
		<property name="id" value="default.today" />
		<property name="desc"
			value="Defaults to TODAY, when the object is created" />
		<property name="serverSide" value="true" />
		<property name="comments" value="Not sure how to implement defaults" />
	</bean>
	<bean id="constraint.duration.types" parent="constraint">
		<property name="id" value="duration.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured duration types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.hard.coded.co-located" parent="constraint">
		<property name="id" value="hard.coded.co-located" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc"
			value="Must be &#34;kuali.lu.relation.type.co-located&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:kuali\.lu\.relation\.type\.co-located" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.cross-listed" parent="constraint">
		<property name="id" value="hard.coded.cross-listed" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc"
			value="Must be &#34;kuali.lu.type.CreditCourse.identifier.cross-listed&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars"
			value="regex:kuali\.lu\.type\.CreditCourse\.identifier\.cross-listed" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.feeType.Revenue" parent="constraint">
		<property name="id" value="hard.coded.feeType.Revenue" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="Must be &#34;Per Credit Rate&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:Revenue" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.lolorealtion.includes" parent="constraint">
		<property name="id" value="hard.coded.lolorealtion.includes" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc"
			value="Must be &#34;kuali.lo.lo.relation.type.includes&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars"
			value="regex:kulai\.lo\.lo\.relation\.type\.includes" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.lulorealtion.includes" parent="constraint">
		<property name="id" value="hard.coded.lulorealtion.includes" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc"
			value="Must be &#34;kuali.lu.lo.relation.type.includes&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars"
			value="regex:kulai\.lu\.lo\.relation\.type\.includes" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.one" parent="constraint">
		<property name="id" value="hard.coded.one" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="Must be 1" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:1" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.rateType.fixedRate" parent="constraint">
		<property name="id" value="hard.coded.rateType.fixedRate" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="Must be &#34;Fixed Rate&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:Fixed Rate" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.rateType.multipleRate" parent="constraint">
		<property name="id" value="hard.coded.rateType.multipleRate" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="Must be &#34;Multiple Rate&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:Multiple Rate" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.rateType.perCreditRate" parent="constraint">
		<property name="id" value="hard.coded.rateType.perCreditRate" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="Must be &#34;Per Credit Rate&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:Per Credit Rate" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.rateType.variableRate" parent="constraint">
		<property name="id" value="hard.coded.rateType.variableRate" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="Must be &#34;Variable Rate&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:Variable Rate" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.referenceType.CLU" parent="constraint">
		<property name="id" value="hard.coded.referenceType.CLU" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="Must be &#34;kuali.referenceType.CLU&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:kuali\.referenceType\.CLU" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.singleUse.lo" parent="constraint">
		<property name="id" value="hard.coded.singleUse.lo" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc" value="must be &#34;kuali.lo.type.singleUse&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:kuali\.lo\.type\.singleUse" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.singleUse.lo.repository" parent="constraint">
		<property name="id" value="hard.coded.singleUse.lo.repository" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc"
			value="Must be &#34;kuali.loRepository.key.single.use&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars" value="regex:kuali\.loRepository\.key\.singleUse" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hard.coded.version" parent="constraint">
		<property name="id" value="hard.coded.version" />
		<!--<property name="messageId" value="kuali.msg.validation.hard.coded" />-->
		<property name="desc"
			value="Must be &#34;kuali.lu.type.CreditCourse.identifier.version&#34;" />
		<property name="serverSide" value="true" />
		<property name="validChars"
			value="regex:kuali\.lu\.type\.CreditCourse\.identifier\.version" />
		<property name="specialValidator"
			value="org.kuali.student.core.calculation.HardCodedValueCalculator" />
	</bean>
	<bean id="constraint.hidden" parent="constraint">
		<property name="id" value="hidden" />
		<property name="desc" value="Hidden (not normally displayed)" />
		<property name="serverSide" value="false" />
		<property name="comments"
			value="Hidden isn't really a constraint but is captured here to help people think aobut the data and eventualy to help feed the configurable UI." />
	</bean>
	<bean id="constraint.integer" parent="constraint">
		<property name="id" value="integer" />
		<!--<property name="messageId" value="kuali.msg.validation.integer" />-->
		<property name="desc" value="Integer" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="9" />
		<property name="validChars" value="regex:^(\+|\-)?[0-9]+$" />
		<property name="comments"
			value="http://regexlib.com/REDetails.aspx?regexp_id=14" />
	</bean>
	<bean id="constraint.kuali.id" parent="constraint">
		<property name="id" value="kuali.id" />
		<!--<property name="messageId" value="kuali.msg.validation.kuali.id" />-->
		<property name="desc"
			value="Kuali ID; calculated by service on add, then read-only." />
		<property name="serverSide" value="true" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="36" />
		<property name="minOccurs" value="1" />
		<property name="maxOccurs" value="1" />
		<property name="comments"
			value="MinOccur on ID's of 1 may not work because it is missing on the create" />
		<property name="specialValidator"
			value="org.kuali.student.core.validation.KualiIdValidator" />
	</bean>
	<bean id="constraint.kuali.meta.data" parent="constraint">
		<property name="id" value="kuali.meta.data" />
		<!--<property name="messageId" value="kuali.msg.validation.kuali.meta.data" />-->
		<property name="desc"
			value="Kuali Meta Data: calculated by service, read-only" />
		<property name="serverSide" value="true" />
		<property name="minOccurs" value="1" />
		<property name="maxOccurs" value="1" />
		<property name="comments"
			value="MinOccur on Meta data structures may not 1 not work because it is not supplied  on the create" />
		<property name="specialValidator"
			value="org.kuali.student.core.validation.KualiMetaDataValidator" />
	</bean>
	<bean id="constraint.kuali.state" parent="constraint">
		<property name="id" value="kuali.state" />
		<!--<property name="messageId" value="kuali.msg.validation.kuali.state" />-->
		<property name="desc" value="Kuali STATE" />
		<property name="serverSide" value="true" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="30" />
		<property name="minOccurs" value="1" />
		<property name="maxOccurs" value="1" />
		<property name="validChars" value="regex:[A-Za-z0-9.\-]*" />
	</bean>
	<bean id="constraint.kuali.type" parent="constraint">
		<property name="id" value="kuali.type" />
		<!--<property name="messageId" value="kuali.msg.validation.kuali.type" />-->
		<property name="desc" value="Kuali TYPE: required on add, then read-only" />
		<property name="serverSide" value="true" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="minOccurs" value="1" />
		<property name="maxOccurs" value="1" />
		<property name="validChars" value="regex:[A-Za-z0-9.\-]*" />
	</bean>
	<bean id="constraint.letter" parent="constraint">
		<property name="id" value="letter" />
		<!--<property name="messageId" value="kuali.msg.validation.letter" />-->
		<property name="desc" value="letters only" />
		<property name="serverSide" value="false" />
		<property name="validChars" value="regex:[A-Za-z]*" />
	</bean>
	<bean id="constraint.lo.category.types" parent="constraint">
		<property name="id" value="lo.category.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of lo category types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.lo.hierarchy.types" parent="constraint">
		<property name="id" value="lo.hierarchy.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc"
			value="In a list of configured program lo hierarchy types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.lo.lo.relation.types" parent="constraint">
		<property name="id" value="lo.lo.relation.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc"
			value="In list of configured lo-lo relationship types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.lo.repositories" parent="constraint">
		<property name="id" value="lo.repositories" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured lo repositories" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="comments" value="TO DO: add to SimpleS" />
	</bean>
	<bean id="constraint.lo.types" parent="constraint">
		<property name="id" value="lo.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of confured lo types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="comments" value="TO DO: add to SimpleS" />
	</bean>
	<bean id="constraint.lu.activity.types" parent="constraint">
		<property name="id" value="lu.activity.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In a list of configured activity LuTypes" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.lu.identifier.types" parent="constraint">
		<property name="id" value="lu.identifier.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured clu identifier types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.lu.lo.relation.types" parent="constraint">
		<property name="id" value="lu.lo.relation.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured lu-lo relation types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.lu.lu.relation.types" parent="constraint">
		<property name="id" value="lu.lu.relation.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured lul-lu relation types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.lu.states" parent="constraint">
		<property name="id" value="lu.states" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured learning unit states" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="30" />
	</bean>
	<bean id="constraint.lu.types" parent="constraint">
		<property name="id" value="lu.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured learning unit types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.multi.line.text" parent="constraint">
		<property name="id" value="multi.line.text" />
		<!--<property name="messageId" value="kuali.msg.validation.printable" />-->
		<property name="desc"
			value="Multi-line text field that accepts all printable characters plus tab, carraige-return and linefeed." />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="validChars"
			value="regex:[A-Za-z0-9()\?\[\];/\\\.•\-;,:&#34;'&amp;%$#@!\n\r\t ]*" />
		<property name="comments"
			value="old reg ex was [A-Za-z0-9.-;;'&amp;%$#@!\n\r\t]*" />
	</bean>
	<bean id="constraint.non-negative.integer" parent="constraint">
		<property name="id" value="non-negative.integer" />
		<!--<property name="messageId" value="kuali.msg.validation.non-negative.integer" />-->
		<property name="desc" value="Non-Negative Integer" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="10" />
		<property name="minValue" value="0" />
		<property name="validChars" value="regex:^[0-9]+$" />
		<property name="comments"
			value="http://regexlib.com/REDetails.aspx?regexp_id=13" />
	</bean>
	<bean id="constraint.cross.greaterthan.effective.date" parent="constraint">
		<property name="id" value="cross.greaterthan.effective.date"/>
		<!--<property name="messageId" value="kuali.msg.validation.date.less.than.effective"/>-->
		<property name="desc" value="Must be empty or a date greater than the entity's effective date"/>
		
		<!-- This is a hack, since we don't have a well defined way to handle cross field constraints. -->
		<property name="minValue" value="../effectiveDate"/>
	</bean>
	<bean id="constraint.not.used" parent="constraint">
		<property name="id" value="not.used" />
		<!--<property name="messageId" value="kuali.msg.validation.not.used" />-->
		<property name="desc" value="Not Used" />
		<property name="serverSide" value="false" />
		<property name="minOccurs" value="0" />
		<property name="maxOccurs" value="0" />
	</bean>
	<bean id="constraint.optional" parent="constraint">
		<property name="id" value="optional" />
		<property name="desc" value="Optional" />
		<property name="serverSide" value="false" />
		<property name="minOccurs" value="0" />
		<property name="comments"
			value="Used to override a previous required constraint.  Also implied by the absence of a required constraint" />
	</bean>
	<bean id="constraint.proposal.types" parent="constraint">
		<property name="id" value="proposal.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In a list of configured proposal types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="comments" value="TO DO: add to SimpleS" />
	</bean>
	<bean id="constraint.rate.types" parent="constraint">
		<property name="id" value="rate.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In a list of configured rate types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
	</bean>
	<bean id="constraint.read.only" parent="constraint">
		<property name="id" value="read.only" />
		<property name="desc" value="Read Only" />
		<property name="serverSide" value="false" />
		<property name="comments"
			value="Read-only isn't really a constraint on the data but is a constraint on the UI. It is here so it can be easily flagged as an attribute so thait can eventually feed the UI." />
	</bean>
	<bean id="constraint.reference.types" parent="constraint">
		<property name="id" value="reference.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In a list of configured reference types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="60" />
		<property name="comments" value="TO DO: add to SimpleS" />
	</bean>
	<bean id="constraint.related.cluId" parent="constraint">
		<property name="id" value="related.cluId" />
		<!--<property name="messageId" value="kuali.msg.validation.not.a.valid.related.id" />-->
		<property name="desc" value="Id of an existing CLU" />
		<property name="serverSide" value="true" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="36" />
		<property name="comments"
			value="Requires special logic to check that the ID supplied actually exists" />
		<property name="specialValidator"
			value="org.kuali.student.lum.lu.validation.CluIdExistsValidator" />
	</bean>
	<bean id="constraint.related.orgId" parent="constraint">
		<property name="id" value="related.orgId" />
		<!--<property name="messageId" value="kuali.msg.validation.not.a.valid.related.id" />-->
		<property name="desc" value="Id of an existing ORG" />
		<property name="serverSide" value="true" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="36" />
		<property name="comments"
			value="Requires special logic to check that the ID supplied actually exists" />
		<property name="specialValidator"
			value="org.kuali.student.core.org.validation.OrgIdExistsValidator" />
	</bean>
	<bean id="constraint.related.personId" parent="constraint">
		<property name="id" value="related.personId" />
		<!--<property name="messageId" value="kuali.msg.validation.not.a.valid.related.id" />-->
		<property name="desc" value="Id of an existing PERSON" />
		<property name="serverSide" value="true" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="36" />
		<property name="comments"
			value="Requires special logic to check that the ID supplied actually exists" />
		<property name="specialValidator"
			value="org.kuali.student.core.person.validation.PersonIddExistsValidator" />
	</bean>
	<bean id="constraint.related.principalId" parent="constraint">
		<property name="id" value="related.principalId" />
		<!--<property name="messageId" value="kuali.msg.validation.not.a.valid.related.id" />-->
		<property name="desc" value="Id of an existing PRINCIPAL" />
		<property name="serverSide" value="true" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="36" />
		<property name="comments"
			value="Requires special logic to check that the ID supplied actually exists" />
		<property name="specialValidator"
			value="org.kuali.student.core.auth.validation.PrincipaldExistsValidator" />
	</bean>
    <bean id="constraint.related.proposalId" parent="constraint">
        <property name="id" value="related.proposalId" />
        <!--<property name="messageId" value="kuali.msg.validation.not.a.valid.related.id" />-->
        <property name="desc" value="Id of an existing PROPOSAL" />
        <property name="serverSide" value="true" />
        <property name="minLength" value="1" />
        <property name="maxLength" value="36" />
    <!--  GNL

        <property name="comments"
            value="Requires special logic to check that the ID supplied actually exists" />
          <property name="specialValidator"
            value="org.kuali.student.lum.lu.validation.ProposalIdExistsValidator" />
     -->
    </bean>

	<bean id="constraint.repeating" parent="constraint">
		<property name="id" value="repeating" />
		<property name="desc" value="Repeating" />
		<property name="serverSide" value="false" />
		<property name="comments"
			value="Nine 9's get translated as &#34;(unbounded)&#34;" />
	</bean>
	<bean id="constraint.required" parent="constraint">
		<property name="id" value="required" />
		<!--<property name="messageId" value="kuali.msg.validation.required" />-->
		<property name="desc" value="Required" />
		<property name="serverSide" value="false" />
		<property name="minOccurs" value="1" />
	</bean>
	<bean id="constraint.rich.text" parent="constraint">
		<property name="id" value="rich.text" />
		<!--<property name="messageId" value="kuali.msg.validation.printable" />-->
		<property name="desc"
			value="Text field that accepts all types of characters using some sort of escaping convention along with the ability to specify bolding, font size, color etc." />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="validChars"
			value="regex:[A-Za-z0-9.-;:&#34;'&amp;%$#@!\n\r\t ]*" />
		<property name="comments"
			value="Not sure if characterset for rich text is the same for regular text but just interpretted differently.  I.e. html is plain text interpreted differently." />
	</bean>
	<bean id="constraint.single" parent="constraint">
		<property name="id" value="single" />
		<!--<property name="messageId" value="kuali.msg.validation.single" />-->
		<property name="desc" value="Single valued (non-repeating)" />
		<property name="serverSide" value="false" />
		<property name="maxOccurs" value="1" />
		<property name="comments" value="Used to override a repeating constraint" />
	</bean>
	<bean id="constraint.single.line.text" parent="constraint">
		<property name="id" value="single.line.text" />
		<!--<property name="messageId" value="kuali.msg.validation.single.line.text" />-->
		<property name="desc"
			value="A basic single line of text, no embedded carraige returns or tabs limited to 255" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="255" />
		<property name="validChars" value="regex:[A-Za-z0-9.\-;:&#34;'&amp;%$#@!\t ]*" />
		<property name="comments"
			value="old reg ex was &#34;[A-Za-z0-9.-;;'&amp;%$#@!]*" />
	</bean>
	<bean id="constraint.size.one" parent="constraint">
		<property name="id" value="size.one" />
		<!--<property name="messageId" value="kuali.msg.validation.size.one" />-->
		<property name="desc" value="Only one character" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="1" />
	</bean>
	<bean id="constraint.subject.areas" parent="constraint">
		<property name="id" value="subject.areas" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured subject areas" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="4" />
		<property name="maxLength" value="4" />
		<property name="validChars" value="regex:[A-Z]*" />
	</bean>
	<bean id="constraint.unit.types" parent="constraint">
		<property name="id" value="unit.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc" value="In list of configured unit types" />
		<property name="serverSide" value="false" />
		<property name="minLength" value="1" />
		<property name="maxLength" value="50" />
		<property name="comments"
			value="Although called a type, this is not a formal type in kuali student like an lu type, for example it may be changeable after being added." />
	</bean>
	<bean id="constraint.valid.duration.types" parent="constraint">
		<property name="id" value="valid.duration.types" />
		<!--<property name="messageId" value="kuali.msg.validation.not.in.enumerated.list" />-->
		<property name="desc"
			value="In a list of duration types configured by LuType" />
		<property name="serverSide" value="false" />
	</bean>

	<!-- data structures -->
	<bean id="CreditCourseProposal-parent" abstract="true"
		parent="dataObjectStructure">
		<property name="name" value="CreditCourseProposal" />
		<property name="fields">
			<list>
				<ref bean="CreditCourseProposal.proposal" />
				<ref bean="CreditCourseProposal.course" />
				<ref bean="CreditCourseProposal.state" />
				<ref bean="CreditCourseProposal.type" />
				<ref bean="CreditCourseProposal.search" />
				<ref bean="CreditCourseProposal.cluset" />
			</list>
		</property>
	</bean>
	<bean id="CreditCourseProposal.proposal" parent="dataFieldDescriptor">
		<property name="name" value="proposal" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="proposal" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="CreditCourseProposal.course" parent="dataFieldDescriptor">
		<property name="name" value="course" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="course" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="CreditCourseProposal.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.state" />
			</list>
		</property>
	</bean>
	<bean id="CreditCourseProposal.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="ON_CREATE" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.course.proposal.types" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.proposal.types" />
			</list>
		</property>
	</bean>
	<bean id="CreditCourseProposal.search" parent="dataFieldDescriptor">
		<property name="name" value="search" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="search" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.course.proposal.types" />
				<ref bean="constraint.required" />
				<ref bean="constraint.proposal.types" />
			</list>
		</property>
	</bean>
	<bean id="CreditCourseProposal.cluset" parent="dataFieldDescriptor">
		<property name="name" value="cluset" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="cluset" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="CreditCourseProposal" parent="CreditCourseProposal-parent" />
	<bean id="_runtimeData-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="_runtimeData" />
		<property name="fields">
			<list>
				<ref bean="_runtimeData.created" />
				<ref bean="_runtimeData.deleted" />
				<ref bean="_runtimeData.updated" />
				<ref bean="_runtimeData.versions" />
				<ref bean="_runtimeData.id-translation" />
				<ref bean="_runtimeData.dirty" />
			</list>
		</property>
	</bean>
	<bean id="_runtimeData.created" parent="dataFieldDescriptor">
		<property name="name" value="created" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="BOOLEAN" />
		<property name="defaultValue" value="FALSE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="_runtimeData.deleted" parent="dataFieldDescriptor">
		<property name="name" value="deleted" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="BOOLEAN" />
		<property name="defaultValue" value="FALSE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="_runtimeData.updated" parent="dataFieldDescriptor">
		<property name="name" value="updated" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="BOOLEAN" />
		<property name="defaultValue" value="FALSE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="_runtimeData.versions" parent="dataFieldDescriptor">
		<property name="name" value="versions" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="versions" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="_runtimeData.id-translation" parent="dataFieldDescriptor">
		<property name="name" value="id-translation" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="versions" />
		<property name="dataType" value="DATA" />
	</bean>
	<bean id="_runtimeData.dirty" parent="dataFieldDescriptor">
		<property name="name" value="dirty" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="BOOLEAN" />
		<property name="defaultValue" value="FALSE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="_runtimeData" parent="_runtimeData-parent" />
	<bean id="versions-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="versions" />
		<property name="fields">
			<list>
				<ref bean="versions.type" />
				<ref bean="versions.id" />
				<ref bean="versions.versionInd" />
				<ref bean="versions.versionCode" />
				<ref bean="versions.versionTitle" />
				<ref bean="versions.subjectArea" />
				<ref bean="versions.courseNumberSuffix" />
				<ref bean="versions._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="versions.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="versions.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="versions.versionInd" parent="dataFieldDescriptor">
		<property name="name" value="versionInd" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="versions" parent="versions-parent" />
	<bean id="formats-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="formats" />
		<property name="fields">
			<list>
				<ref bean="formats.id" />
				<ref bean="formats.activities" />
				<ref bean="formats.state" />
				<ref bean="formats._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="formats.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="formats.activities" parent="dataFieldDescriptor">
		<property name="name" value="activities" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="activities" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="minOccurs" value="1" />
				</bean>
			</list>
		</property>
	</bean>
	<bean id="formats.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.state" />
				<ref bean="constraint.lu.states" />
			</list>
		</property>
	</bean>
	<bean id="formats._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="formats" parent="formats-parent" />
	<bean id="activities-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="activities" />
		<property name="fields">
			<list>
				<ref bean="activities.id" />
				<ref bean="activities.activityType" />
				<ref bean="activities.contactHours" />
				<ref bean="activities.duration" />
				<ref bean="activities.defaultEnrollmentEstimate" />
				<ref bean="activities.state" />
				<ref bean="activities._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="activities.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="activities.activityType" parent="dataFieldDescriptor">
		<property name="name" value="activityType" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.lu.activity.types" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.type" />
				<ref bean="constraint.lu.types" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="kuali.lookup.lutypes">
				<property name="params">
				<list>	
					<!-- Constrain activity types to types that start with "kuali.lu.type.activity." -->
					<bean parent="param">
						<property name="key" value="lu.queryParam.luOptionalLuTypeStartsWith" />
						<property name="name" value="Activity Type" />
						<property name="desc" value="Activity Type" />
						<property name="writeAccess" value="NEVER" />
						<property name="usage" value="DEFAULT" />
						<property name="defaultValueString" value="kuali.lu.type.activity."/>
					</bean>
				</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="activities.contactHours" parent="dataFieldDescriptor">
		<property name="name" value="contactHours" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="contactHours" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="activities.duration" parent="dataFieldDescriptor">
		<property name="name" value="duration" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="activityDuration" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="activities.defaultEnrollmentEstimate" parent="dataFieldDescriptor">
		<property name="name" value="defaultEnrollmentEstimate" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="INTEGER" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.non-negative.integer" />
			</list>
		</property>
	</bean>
	<bean id="activities.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.state" />
				<ref bean="constraint.lu.states" />
			</list>
		</property>
	</bean>
	<bean id="activities._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="activities" parent="activities-parent" />
	<bean id="crossListings-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="crossListings" />
		<property name="fields">
			<list>
				<ref bean="crossListings.id" />
				<ref bean="crossListings.type" />
				<ref bean="crossListings.department" />
				<ref bean="crossListings.subjectArea" />
				<ref bean="crossListings.courseNumberSuffix" />
				<ref bean="crossListings._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="crossListings.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="crossListings.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.cross-listed" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.type" />
				<ref bean="constraint.lu.identifier.types" />
			</list>
		</property>
	</bean>
	<bean id="crossListings.department" parent="dataFieldDescriptor">
		<property name="name" value="department" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="proposal.proposerPerson" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.orgId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.admin.departments.suggest" />
				<property name="searchTypeId" value="org.search.generic" />
				<property name="name" value="Organization search" />
				<property name="desc" value="Search for administrative department organization" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="org.queryParam.orgOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="org.queryParam.orgOptionalLongName" />
							<property name="name" value="Organization Name" />
							<property name="desc" value="Long organization name." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to department organizations for this UI context -->
							<property name="key" value="org.queryParam.orgOptionalType" />
							<property name="name" value="Org Type" />
							<property name="desc" value="Type of an organization." />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueList">
								<list>
									<value>kuali.org.Department</value>
									<value>kuali.org.College</value>
								</list>
							</property>
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="org.resultColumn.orgId" />
				<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgId" />
							<property name="name" value="Organization Identifier" />
							<property name="desc" value="Identifier for the organization" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<!-- <bean parent="result">
							<property name="key" value="org.resultColumn.orgShortName" />
							<property name="name" value="Short Name" />
							<property name="desc" value="Short name for the organization, recorded as the default listing." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
-->
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgOptionalLongName" />
							<property name="name" value="Name" />
							<property name="desc" value="Long name for the organization, recorded as the default listing." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.admin.departments.advanced"/>
					<property name="searchTypeId" value="org.search.generic"/>
					<property name="name" value="Organizations"/>
					<property name="desc" value="Search for administrative department organization"/>
					<property name="title" value="Find Organization"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLocation"/>
								<property name="name" value="Location"/>
								<property name="desc" value="Organization location."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalId"/>
								<property name="name" value="Id"/>
								<property name="desc" value="Unique identifier for an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueList">
									<list>
										<value>kuali.org.Department</value>
										<value>kuali.org.College</value>
									</list>
								</property>
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="org.resultColumn.orgId"/>
					<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgId"/>
								<property name="name" value="Organization Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short name for the organization, recorded as the default listing"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the organization, recorded as the default listing."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="crossListings.subjectArea" parent="dataFieldDescriptor">
		<property name="name" value="subjectArea" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="department" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.subject.areas" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="id" value="kuali.enumeration.management.search.subjectAreas" />			
				<property name="name" value="Get enumerations" />
				<property name="desc" value="Get enumerated lists of values given context" />
				<property name="searchTypeId" value="enumeration.management.search" />
				<property name="searchParamIdKey" value="enumeration.queryParam.enumerationCode" />
				<property name="widget" value="SUGGEST_BOX" />			
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationType" />
							<property name="name" value="Enumeration Type" />
							<property name="desc" value="The type of the enumeration to search" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="defaultValueString" value="kuali.lu.subjectArea" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationOptionalCode" />
							<property name="name" value="Context Value" />
							<property name="desc" value="The enumeration code to lookup" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="usage" value="DEFAULT" />							
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="enumeration.resultColumn.code" />
				<property name="resultDisplayKey" value="enumeration.resultColumn.abbrevValue" />
				<property name="resultSortKey" value="enumeration.resultColumn.sortKey" />				
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The internal code of the enumeration value" />
							<property name="hidden" value="true" />
							<property name="key" value="enumeration.resultColumn.code" />
							<property name="name" value="Code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="An abbreviation of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.abbrevValue" />
							<property name="name" value="Abbreviation of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The description of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.value" />
							<property name="name" value="Description of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.effectiveDate" />
							<property name="name" value="Effective date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became non-effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.expirationDate" />
							<property name="name" value="Expiration date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="The description of the type" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.sortKey" />
							<property name="name" value="Key used to sort the results" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="crossListings.courseNumberSuffix" parent="dataFieldDescriptor">
		<property name="name" value="courseNumberSuffix" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="subjectArea" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.available.course.numbers" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="crossListings._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="crossListings" parent="crossListings-parent" />
	<bean id="versions.versionTitle" parent="dataFieldDescriptor">
		<property name="name" value="versionTitle" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.single.line.text" />
			</list>
		</property>
	</bean>
	<bean id="versions.subjectArea" parent="dataFieldDescriptor">
		<property name="name" value="subjectArea" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="course.subjectArea" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.calc.copy.course.official.subjectArea" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
	</bean>
	<bean id="versions.courseNumberSuffix" parent="dataFieldDescriptor">
		<property name="name" value="courseNumberSuffix" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="course.CourseNumberSuffix" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.calc.copy.course.official.numberPart" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
	</bean>
	<bean id="versions.versionCode" parent="dataFieldDescriptor">
		<property name="name" value="versionCode" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.code.uppercase" />
				<ref bean="constraint.letter" />
				<ref bean="constraint.size.one" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
	</bean>
	<bean id="versions._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="joints-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="joints" />
		<property name="fields">
			<list>
				<ref bean="joints.type" />
				<ref bean="joints.courseId" />
				<ref bean="joints.relationId" />
				<ref bean="joints.courseTitle" />
				<ref bean="joints.subjectArea" />
				<ref bean="joints.courseNumberSuffix" />
				<ref bean="joints._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="joints.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.co-located" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.type" />
				<ref bean="constraint.lu.lu.relation.types" />
			</list>
		</property>
	</bean>
	<bean id="joints.courseId" parent="dataFieldDescriptor">
		<property name="name" value="courseId" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.cluId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCourse.suggest" />
				<property name="searchTypeId" value="lu.search.generic" />
				<property name="name" value="Find Course" />
				<property name="desc" value="Search for courses" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="lu.queryParam.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to credit course for this UI context -->
							<property name="key" value="lu.queryParam.luOptionalType" />
							<property name="name" value="Lu Type" />
							<property name="desc" value="Type of a learning unit" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="lu.resultColumn.cluId" />
				<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.cluId" />
							<property name="name" value="Course Identifier" />
							<property name="desc" value="Identifier for the course" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCourse.advanced.courseproposal"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Courses and Proposals"/>
					<property name="desc" value="Search for courses and proposals"/>
					<property name="title" value="Course or Proposal"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Course title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Course description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalStudySubjectArea"/>
								<property name="name" value="Subject Area"/>
								<property name="desc" value="Study Subject Area"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a course"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
							<bean parent="param"><!-- limit search to only return approved clus -->
								<property name="key" value="lu.queryParam.luOptionalState" />
								<property name="name" value="State" />
								<property name="desc" value="CLU State" />
								<property name="writeAccess" value="NEVER" />
								<property name="defaultValueList">
									<list>
										<value>draft</value>
										<value>submitted</value>
										<value>withdrawn</value>
										<value>approved</value>
										<value>Active</value>
										<!-- do not show rejected or retired <value>rejected</value> -->
									</list>
								</property>	
								<property name="caseSensitive" value="true" />
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Title for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalStudySubjectArea"/>
								<property name="name" value="Subject Area"/>
								<property name="desc" value="Study Subject Area."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalState"/>
								<property name="name" value="State"/>
								<property name="desc" value="Course or proposal state."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCourse.advanced.coursesonly"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Courses Only"/>
					<property name="desc" value="Search for courses"/>
					<property name="title" value="Course or Proposal"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Course title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Course description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalStudySubjectArea"/>
								<property name="name" value="Subject Area"/>
								<property name="desc" value="Study Subject Area"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a course"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
							<bean parent="param"><!-- limit search to only return approved clus -->
								<property name="key" value="lu.queryParam.luOptionalState" />
								<property name="name" value="State" />
								<property name="desc" value="CLU State" />
								<property name="writeAccess" value="NEVER" />
								<property name="defaultValueList">
									<list>
										<value>Active</value>
										<!-- do not show retired: <value>retired</value> -->
									</list>
								</property>
								<property name="caseSensitive" value="true" />
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Title for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>							
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalStudySubjectArea"/>
								<property name="name" value="Subject Area"/>
								<property name="desc" value="Study Subject Area."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalState"/>
								<property name="name" value="State"/>
								<property name="desc" value="Course or proposal state."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCourse.advanced.proposalsonly"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Proposals Only"/>
					<property name="desc" value="Search for proposals"/>
					<property name="title" value="Course or Proposal"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Course title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Course description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalStudySubjectArea"/>
								<property name="name" value="Subject Area"/>
								<property name="desc" value="Study Subject Area"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a course"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
							<bean parent="param"><!-- limit search to only return approved clus -->
								<property name="key" value="lu.queryParam.luOptionalState" />
								<property name="name" value="State" />
								<property name="desc" value="CLU State" />
								<property name="writeAccess" value="NEVER" />
								<property name="defaultValueList">
									<list>
										<value>draft</value>
										<value>submitted</value>
										<value>withdrawn</value>
										<value>approved</value>
										<!-- do not show rejected <value>rejected</value> -->
									</list>
								</property>
								<property name="caseSensitive" value="true" />
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Title for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>							
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalStudySubjectArea"/>
								<property name="name" value="Subject Area"/>
								<property name="desc" value="Study Subject Area."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalState"/>
								<property name="name" value="State"/>
								<property name="desc" value="Course or proposal state."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
    <bean id="joints.proposalId" parent="dataFieldDescriptor">
        <property name="name" value="proposalId" />
        <property name="writeAccess" value="ALWAYS" />
        <property name="onChangeRefreshMetadata" value="false" />
        <property name="dataType" value="STRING" />
        <property name="constraints">
            <list>
                <ref bean="constraint.single" />
                <ref bean="constraint.required" />
                <ref bean="constraint.single" />
                 <ref bean="constraint.related.proposalId" />
            </list>
        </property>
        <property name="initialLookup">
            <bean parent="lookup">
                <property name="searchTypeId" value="proposal.search.generic" />
                <property name="name" value="Basic and Advanced Search" />
                <property name="desc" value="Query with multiple optional elements to satisfy most advanced pickers" />
                <property name="params">
                    <list>
                        <bean parent="param">
                            <property name="key" value="proposal.queryParam.proposalId" />
                            <property name="writeAccess" value="ALWAYS" />
                            <property name="dataType" value="STRING" />
                            <property name="optional" value="true" />
                            <property name="name" value="Id" />
                            <property name="desc" value="Unique identifier for a proposal." />
                            <property name="caseSensitive" value="true" />
                            <property name="usage" value="CUSTOM" />
                        </bean>
                        <bean parent="param">
                            <property name="key" value="proposal.queryParam.proposalOptionalName" />
                            <property name="writeAccess" value="ALWAYS" />
                            <property name="dataType" value="STRING" />
                            <property name="optional" value="true" />
                            <property name="name" value="Name" />
                            <property name="desc" value="Long name" />
                            <property name="caseSensitive" value="false" />
                            <property name="usage" value="ADVANCED_CUSTOM" />
                            <property name="widget" value="SUGGEST_BOX" />
                        </bean>
                    </list>
                </property>
                <property name="results">
                    <list>
                       <bean parent="result">
                            <property name="dataType" value="STRING" />
                            <property name="desc"
                                value="Id for the proposal." />
                            <property name="hidden" value="true" />
                            <property name="key" value="proposal.resultColumn.proposalId" />
                            <property name="name" value="Id" />
                        </bean>
                       <bean parent="result">
                            <property name="dataType" value="STRING" />
                            <property name="desc"
                                value="Name for the proposal." />
                            <property name="hidden" value="false" />
                            <property name="key" value="proposal.resultColumn.proposalOptionalName" />
                            <property name="name" value="Name" />
                        </bean>
                    </list>
                </property>
                <property name="resultReturnKey" value="proposal.resultColumn.proposalId" />
                <property name="resultDisplayKey" value="proposal.resultColumn.proposalOptionalName" />
                <property name="resultSortKey" value="proposal.resultColumn.proposalOptionalName" />
                <property name="usage" value="DEFAULT" />
                <property name="id" value="kuali.proposal.lookup.Proposals" />
            </bean>
        </property>
        <property name="additionalLookups">
            <list />
        </property>
    </bean>

	<bean id="joints.relationId" parent="dataFieldDescriptor">
		<property name="name" value="relationId" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="joints.courseTitle" parent="dataFieldDescriptor">
		<property name="name" value="courseTitle" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="joints.subjectArea" parent="dataFieldDescriptor">
		<property name="name" value="subjectArea" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="joints.courseNumberSuffix" parent="dataFieldDescriptor">
		<property name="name" value="courseNumberSuffix" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="joints._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="joints" parent="joints-parent" />
	<bean id="fees-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="fees" />
		<property name="fields">
			<list>
				<ref bean="fees.justification" />
				<ref bean="fees.fixedRateFee" />
				<ref bean="fees.variableRateFee" />
				<ref bean="fees.multipleRateFee" />
				<ref bean="fees.perCreditFee" />
				<ref bean="fees._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="fees.justification" parent="dataFieldDescriptor">
		<property name="name" value="justification" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<bean parent="constraint.multi.line.text">
					<property name="minLength" value="0" />
				</bean>
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="maxLength" value="1000" />
				</bean>
				<ref bean="constraint.optional" />
			</list>
		</property>
	</bean>
	<bean id="fees.fixedRateFee" parent="dataFieldDescriptor">
		<property name="name" value="fixedRateFee" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="fixedRateFee" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<ref bean="constraint.optional" />
			</list>
		</property>
	</bean>
	<bean id="fees.variableRateFee" parent="dataFieldDescriptor">
		<property name="name" value="variableRateFee" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="variableRateFee" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="fees.multipleRateFee" parent="dataFieldDescriptor">
		<property name="name" value="multipleRateFee" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="multipleRateFee" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="fees.perCreditFee" parent="dataFieldDescriptor">
		<property name="name" value="perCreditFee" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="perCreditFee" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="fees._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="fees" parent="fees-parent" />
	
	<bean id="fixedRateFee-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="fixedRateFee" />
		<property name="fields">
			<list>
				<ref bean="fixedRateFee.feeType" />
				<ref bean="fixedRateFee.rateType" />
				<ref bean="fixedRateFee.amount" />
				<ref bean="fixedRateFee.id" />
				<ref bean="fixedRateFee._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="fixedRateFee.feeType" parent="dataFieldDescriptor">
		<property name="name" value="feeType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="FeeSelector.FeeType" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.feetypes" />
		</property>
	</bean>
	<bean id="fixedRateFee.rateType" parent="dataFieldDescriptor">
		<property name="name" value="rateType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<!--
				<ref bean="constraint.hard.coded.rateType.fixedRate" />
				-->
				<ref bean="constraint.rate.types" />
				<ref bean="constraint.optional" />
				<!--
				<ref bean="constraint.repeating" />
				-->
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.ratetypes" />
		</property>		
	</bean>
	<bean id="fixedRateFee.amount" parent="dataFieldDescriptor">
		<property name="name" value="amount" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<!--
				<ref bean="constraint.repeating" />
				-->
			</list>
		</property>
	</bean>
	<bean id="fixedRateFee.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.required" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="fixedRateFee._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="fixedRateFee" parent="fixedRateFee-parent" />
	
	<bean id="variableRateFee-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="variableRateFee" />
		<property name="fields">
			<list>
				<ref bean="variableRateFee.feeType" />
				<ref bean="variableRateFee.rateType" />
				<ref bean="variableRateFee.minAmount" />
				<ref bean="variableRateFee.maxAmount" />
				<ref bean="variableRateFee.id" />
				<ref bean="variableRateFee._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="variableRateFee.feeType" parent="dataFieldDescriptor">
		<property name="name" value="feeType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="FeeSelector.FeeType" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.feetypes" />
		</property>
	</bean>
	<bean id="variableRateFee.rateType" parent="dataFieldDescriptor">
		<property name="name" value="rateType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<!--
				<ref bean="constraint.hard.coded.rateType.variableRate" />
				-->
				<ref bean="constraint.rate.types" />
				<ref bean="constraint.optional" />
				<!--
				<ref bean="constraint.repeating" />
				-->
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.ratetypes" />
		</property>		
	</bean>
	<bean id="variableRateFee.minAmount" parent="dataFieldDescriptor">
		<property name="name" value="minAmount" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	<bean id="variableRateFee.maxAmount" parent="dataFieldDescriptor">
		<property name="name" value="maxAmount" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	<bean id="variableRateFee.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.required" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="variableRateFee._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="variableRateFee" parent="variableRateFee-parent" />
	
	<bean id="multipleRateFee-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="multipleRateFee" />
		<property name="fields">
			<list>
				<ref bean="multipleRateFee.feeType" />
				<ref bean="multipleRateFee.rateType" />
				<ref bean="multipleRateFee.amount" />
				<ref bean="multipleRateFee.id" />
				<ref bean="multipleRateFee._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="multipleRateFee.feeType" parent="dataFieldDescriptor">
		<property name="name" value="feeType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="FeeSelector.FeeType" />
		<property name="constraints">
			<list>
				<ref bean="constraint.optional" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.feetypes" />
		</property>
	</bean>
	<bean id="multipleRateFee.rateType" parent="dataFieldDescriptor">
		<property name="name" value="rateType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<!--
				<ref bean="constraint.hard.coded.rateType.multipleRate" />
				-->
				<ref bean="constraint.rate.types" />
				<ref bean="constraint.optional" />
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.ratetypes" />
		</property>		
	</bean>
	<bean id="multipleRateFee.amount" parent="dataFieldDescriptor">
		<property name="name" value="amount" />
		<property name="writeAccess" value="NEVER" />
		<property name="dataObjectStructure" ref="multipleRateFeeAmount" />
		<property name="dataType" value="DATA" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<ref bean="constraint.required" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="minOccurs" value="2" />
				</bean>
			</list>
		</property>
	</bean>
	<bean id="multipleRateFeeAmount-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="amount" />
		<property name="fields">
			<list>
				<ref bean="multipleRateFeeAmount.amount" />
				<ref bean="multipleRateFeeAmount._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="multipleRateFeeAmount.amount" parent="dataFieldDescriptor">
		<property name="name" value="amount" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	<bean id="multipleRateFeeAmount._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="multipleRateFeeAmount" parent="multipleRateFeeAmount-parent"/>
	
	<bean id="multipleRateFee.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.required" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="multipleRateFee._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="multipleRateFee" parent="multipleRateFee-parent" />
	
	<bean id="perCreditFee-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="perCreditFee" />
		<property name="fields">
			<list>
				<ref bean="perCreditFee.feeType" />
				<ref bean="perCreditFee.rateType" />
				<ref bean="perCreditFee.amount" />
				<ref bean="perCreditFee.id" />
				<ref bean="perCreditFee._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="perCreditFee.feeType" parent="dataFieldDescriptor">
		<property name="name" value="feeType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="FeeSelector.FeeType" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.feetypes" />
		</property>		
	</bean>
	<bean id="perCreditFee.rateType" parent="dataFieldDescriptor">
		<property name="name" value="rateType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<!--
				<ref bean="constraint.hard.coded.rateType.perCreditRate" />
				-->
				<ref bean="constraint.rate.types" />
				<ref bean="constraint.optional" />
				<!--
				<ref bean="constraint.repeating" />
				-->
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lu.lookup.ratetypes" />
		</property>		
	</bean>
	<bean id="perCreditFee.amount" parent="dataFieldDescriptor">
		<property name="name" value="amount" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<!--
				<ref bean="constraint.repeating" />
				-->
			</list>
		</property>
	</bean>
	<bean id="perCreditFee.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.required" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="perCreditFee._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="perCreditFee" parent="perCreditFee-parent" />
	
	<bean id="expenditureOrg-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="expenditureOrg" />
		<property name="fields">
			<list>
				<ref bean="expenditureOrg.orgId" />
				<ref bean="expenditureOrg.percentage" />
				<ref bean="expenditureOrg.effectiveDate" />
				<ref bean="expenditureOrg._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="expenditureOrg.orgId" parent="dataFieldDescriptor">
		<property name="name" value="orgId" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
		<property name="initialLookup" >
			<ref bean="kuali.lu.lookup.admin.departments.suggest" />
		</property>
		<property name="additionalLookups" >
			<ref bean="kuali.lu.lookup.admin.departments.advanced" />
		</property>
			
	</bean>
	<bean id="expenditureOrg.percentage" parent="dataFieldDescriptor">
		<property name="name" value="percentage" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="LONG" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
		<!-- TODO - write validator for revenueOrg.percentage and
			 expenditureOrg.percentage to enforce that for each,
			 sum(percentages) == 100.00
		<property name="specialValidator"
			value="org.kuali.student.lum.lu.???" />
		 -->
	</bean>
	<bean id="expenditureOrg.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="course.effectiveDate" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	<bean id="expenditureOrg._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="expenditureOrg" parent="expenditureOrg-parent" />
	<bean id="revenueOrg-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="revenueOrg" />
		<property name="fields">
			<list>
				<ref bean="revenueOrg.orgId" />
				<ref bean="revenueOrg.percentage" />
				<ref bean="revenueOrg.effectiveDate" />
				<ref bean="revenueOrg._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="revenueOrg.orgId" parent="dataFieldDescriptor">
		<property name="name" value="orgId" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
		<property name="initialLookup">
			<ref bean="kuali.lu.lookup.admin.departments.suggest" />
		</property>
		<property name="additionalLookups" >
			<ref bean="kuali.lu.lookup.admin.departments.advanced" />
		</property>
	</bean>		

	<bean id="revenueOrg.percentage" parent="dataFieldDescriptor">
		<property name="name" value="percentage" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="LONG" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
		<!-- TODO - write validator for revenueOrg.percentage and
			 expenditureOrg.percentage to enforce that for each,
			 sum(percentages) == 100.00
		<property name="specialValidator"
			value="org.kuali.student.lum.lu.???" />
		 -->
	</bean>
	<bean id="revenueOrg.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValuePath" value="course.effectiveDate" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	<bean id="revenueOrg._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="revenueOrg" parent="revenueOrg-parent" />
	<bean id="courseSpecificLOs-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="courseSpecificLOs" />
		<property name="fields">
			<list>
				<ref bean="courseSpecificLOs.id" />
				<ref bean="courseSpecificLOs.includedSingleUseLo" />
				<ref bean="courseSpecificLOs.effectiveDate" />
				<ref bean="courseSpecificLOs.type" />
				<ref bean="courseSpecificLOs.state" />
				<ref bean="courseSpecificLOs.sequence" />
			</list>
		</property>
	</bean>
	<bean id="courseSpecificLOs.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="courseSpecificLOs.includedSingleUseLo" parent="dataFieldDescriptor">
		<property name="name" value="includedSingleUseLo" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="SingleUseLo" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="courseSpecificLOs.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="defaultValuePath" value="course.effectiveDate" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<bean id="courseSpecificLOs.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.lulorealtion.includes" />
				<ref bean="constraint.hard.coded.lulorealtion.includes" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.type" />
				<ref bean="constraint.lu.lo.relation.types" />
			</list>
		</property>
	</bean>
	<bean id="courseSpecificLOs.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.state" />
			</list>
		</property>
	</bean>
	<bean id="courseSpecificLOs.sequence" parent="dataFieldDescriptor">
		<property name="name" value="sequence" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="courseSpecificLOs" parent="courseSpecificLOs-parent" />
	<bean id="categories-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="categories" />
		<property name="fields">
			<list>
				<ref bean="categories.iD" />
				<ref bean="categories.name" />
				<ref bean="categories.loRepository" />
				<ref bean="categories.typeKey" />
				<ref bean="categories.typeName" />
				<ref bean="categories.state" />
				<ref bean="categories.effectiveDate" />
				<ref bean="categories.expirationDate" />
				<ref bean="categories._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="categories.iD" parent="dataFieldDescriptor">
		<property name="name" value="iD" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="categories.name" parent="dataFieldDescriptor">
		<property name="name" value="name" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.single.line.text" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
			</list>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="categories.loRepository" parent="dataFieldDescriptor">
		<property name="name" value="loRepository" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.singleUse.lo.repository" />
				<ref bean="constraint.hard.coded.singleUse.lo.repository" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.lo.hierarchy.types" />
			</list>
		</property>
	</bean>
	<bean id="categories.typeKey" parent="dataFieldDescriptor">
		<property name="name" value="typeKey" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.lo.category.types" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="categories.typeName" parent="dataFieldDescriptor">
		<property name="name" value="typeName" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="loRepository" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="categories.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="categories.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<bean id="categories.expirationDate" parent="dataFieldDescriptor">
		<property name="name" value="expirationDate" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<bean id="categories._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="categories" parent="categories-parent" />
	<bean id="childSingleUseLos-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="childSingleUseLos" />
		<property name="fields">
			<list>
				<ref bean="childSingleUseLos.id" />
				<ref bean="childSingleUseLos.childLo" />
				<ref bean="childSingleUseLos.effectiveDate" />
				<ref bean="childSingleUseLos.type" />
				<ref bean="childSingleUseLos.state" />
				<ref bean="childSingleUseLos.sequence" />
			</list>
		</property>
	</bean>
	<bean id="childSingleUseLos.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="childSingleUseLos.childLo" parent="dataFieldDescriptor">
		<property name="name" value="childLo" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="SingleUseLo" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="childSingleUseLos.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<bean id="childSingleUseLos.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.lolorealtion.includes" />
				<ref bean="constraint.hard.coded.lolorealtion.includes" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.lo.lo.relation.types" />
			</list>
		</property>
	</bean>
	<bean id="childSingleUseLos.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.state" />
			</list>
		</property>
	</bean>
	<bean id="childSingleUseLos.sequence" parent="dataFieldDescriptor">
		<property name="name" value="sequence" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="childSingleUseLos" parent="childSingleUseLos-parent" />
	<bean id="SingleUseLo-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="childLo" />
		<property name="fields">
			<list>
				<ref bean="SingleUseLo.id" />
				<ref bean="SingleUseLo.description" />
				<ref bean="SingleUseLo.categories" />
				<ref bean="SingleUseLo.loRepository" />
				<ref bean="SingleUseLo.childSingleUseLos" />
				<ref bean="SingleUseLo.effectiveDate" />
				<ref bean="SingleUseLo.type" />
				<ref bean="SingleUseLo.state" />
				<ref bean="SingleUseLo._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo.description" parent="dataFieldDescriptor">
		<property name="name" value="description" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="description" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="minLength" value="1" />
					<property name="maxLength" value="250" />
				</bean>
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  no widget here, just link to advanced search lightbox -->
			<bean parent="lookup">
				<property name="name" value="Search for Learning Objectives" />
				<property name="desc" value="Search for learning objectives" />
				<property name="widget" value="NO_WIDGET"/>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lo.lookup.SingleUseLo.description.advanced1"/>
					<property name="searchTypeId" value="lo.search.loByDescCrossSearch"/>
					<property name="name" value="keyword in Learning Objective"/>
					<property name="desc" value="Search for descriptions in existing learning objectives."/>
					<property name="title" value="Learning Objectives"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.queryParam.loDescPlain"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Description of learning objective."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="REQUIRED"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lo.resultColumn.loDescPlain"/>
					<property name="resultDisplayKey" value="lo.resultColumn.loDescPlain"/>
					<property name="resultSortKey" value="lo.resultColumn.loDescPlain"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loId"/>
								<property name="name" value="LO Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loDescPlain"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Description of learning objective."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loCluCode"/>
								<property name="name" value="Course Code"/>
								<property name="desc" value="Course code"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lo.lookup.SingleUseLo.description.advanced2"/>
					<property name="searchTypeId" value="lo.search.loByCategory"/>		<!-- once is cross search working use: lo.search.loByDescCrossSearch   -->
					<property name="name" value="by Category"/>
					<property name="desc" value="Search for learning objectives by category."/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.queryParam.loOptionalCategoryName"/>
								<property name="name" value="Category"/>
								<property name="desc" value="Category."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="REQUIRED"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lo.resultColumn.loId"/>
					<property name="resultDisplayKey" value="lo.resultColumn.loDescPlain"/>
					<property name="resultSortKey" value="lo.resultColumn.loDescPlain"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loId"/>
								<property name="name" value="LO Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loDescPlain"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Description of learning objective."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loCluCode"/>
								<property name="name" value="Course Code"/>
								<property name="desc" value="Course code"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.categoryName"/>
								<property name="name" value="Category"/>
								<property name="desc" value="LO Category"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lo.lookup.SingleUseLo.description.advanced3"/>
					<property name="searchTypeId" value="lo.search.loByCluCode"/>		<!-- once is cross search working use: lo.search.loByDescCrossSearch   -->
					<property name="name" value="by a Course"/>
					<property name="desc" value="Search for learning objectives by course code."/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.queryParam.cluOfficialIdentifier.cluCode"/>
								<property name="name" value="Course Code"/>
								<property name="desc" value="Course Code"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="REQUIRED"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="TEXT_BOX"/>  <!-- FIXME: should be a drop down -->
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lo.resultColumn.loId"/>
					<property name="resultDisplayKey" value="lo.resultColumn.loDescPlain"/>
					<property name="resultSortKey" value="lo.resultColumn.loDescPlain"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loId"/>
								<property name="name" value="LO Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loDescPlain"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Description of learning objective."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loCluCode"/>
								<property name="name" value="Course Code"/>
								<property name="desc" value="Course code"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo.categories" parent="dataFieldDescriptor">
		<property name="name" value="categories" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="categories" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="searchTypeId" value="lo.search.categories" />
				<property name="name" value="LO Search for all categories" />
				<property name="desc" value="Returns all matching category names" />
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="lo.queryParam.loCategoryName" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="false" />
							<property name="name" value="Category" />
							<property name="desc" value="no description supplied" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Category to be used for an LO" />
							<property name="hidden" value="true" />
							<property name="key" value="lo.resultColumn.categoryId" />
							<property name="name" value="Category ID" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Category to be used for an LO" />
							<property name="hidden" value="false" />
							<property name="key" value="lo.resultColumn.categoryName" />
							<property name="name" value="Category" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Category type for a category" />
							<property name="hidden" value="false" />
							<property name="key" value="lo.resultColumn.categoryType" />
							<property name="name" value="Category" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="Category name concatenated with category type" />
							<property name="hidden" value="false" />
							<property name="key" value="lo.resultColumn.categoryNameAndType" />
							<property name="name" value="Category" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="lo.resultColumn.categoryId" />
				<property name="resultDisplayKey" value="lo.resultColumn.categoryNameAndType" />
				<property name="resultSortKey" value="lo.resultColumn.categoryNameAndType" />
				<property name="usage" value="DEFAULT" />
				<property name="id" value="kuali.lookup.lo.category" />
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="SingleUseLo.loRepository" parent="dataFieldDescriptor">
		<property name="name" value="loRepository" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.singleUse.lo.repository" />
				<ref bean="constraint.hard.coded.singleUse.lo.repository" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.lo.repositories" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo.childSingleUseLos" parent="dataFieldDescriptor">
		<property name="name" value="childSingleUseLos" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="childSingleUseLos" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.singleUse.lo" />
				<ref bean="constraint.hard.coded.singleUse.lo" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.lo.types" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.state" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="SingleUseLo" parent="SingleUseLo-parent" />
	<bean id="contactHours-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="contactHours" />
		<property name="fields">
			<list>
				<ref bean="contactHours.per" />
				<ref bean="contactHours.hrs" />
			</list>
		</property>
	</bean>
	<bean id="contactHours.per" parent="dataFieldDescriptor">
		<property name="name" value="per" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.unit.types" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.contactHoursPer" />			
				<property name="searchTypeId" value="enumeration.management.search" />
				<property name="searchParamIdKey" value="enumeration.queryParam.enumerationCode" />				
				<property name="name" value="Get enumerations" />
				<property name="desc" value="Get enumerated lists of values given context" />
				<property name="widget" value="DROP_DOWN" />				
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationType" />
							<property name="name" value="Enumeration Type" />
							<property name="desc" value="The type of the enumeration to search" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="defaultValueString" value="kuali.atptype.duration" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationCode" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="name" value="Context Value" />
							<property name="desc" value="The enumeration code to lookup" />
							<property name="caseSensitive" value="true" />
						</bean>						
						<!-- <bean parent="param">
							<property name="key" value="enumeration.queryParam.contextType" />
							<property name="name" value="Context Type" />
							<property name="desc" value="The type of context being used" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.contextValue" />
							<property name="name" value="Context Value" />
							<property name="desc" value="The value of the supplied context" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.contextDate" />
							<property name="name" value="Context Date" />
							<property name="desc" value="A date supplied as context" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="DATE" />
							<property name="optional" value="true" />
							<property name="caseSensitive" value="true" />
						</bean> -->
					</list>
				</property>
				<property name="resultReturnKey" value="enumeration.resultColumn.code" />
				<property name="resultDisplayKey" value="enumeration.resultColumn.value" />
				<property name="resultSortKey" value="enumeration.resultColumn.sortKey" />				
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="enumeration.resultColumn.code" />
							<property name="name" value="Code" />
							<property name="desc" value="Code of the enumeration value" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
						<bean parent="result">
							<property name="key" value="enumeration.resultColumn.abbrevValue" />
							<property name="name" value="Abbreviation of the code" />
							<property name="desc" value="An abbreviation of the enumeration value" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />

						</bean>
						<bean parent="result">
							<property name="key" value="enumeration.resultColumn.value" />
							<property name="name" value="Value" />
							<property name="desc" value="The value of the enumeration" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />

						</bean>
						<bean parent="result">
							<property name="key" value="enumeration.resultColumn.sortKey" />
							<property name="name" value="Key used to sort the results" />
							<property name="desc" value="The description of the type" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />

						</bean>
						<!-- <bean parent="result">
							<property name="key" value="enumeration.resultColumn.effectiveDate" />
							<property name="name" value="Effective date" />
							<property name="desc" value="The date the enumeration became effective" />
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="hidden" value="false" />
						</bean>
						<bean parent="result">
							<property name="key" value="enumeration.resultColumn.expirationDate" />
							<property name="name" value="Expiration date" />
							<property name="desc" value="The date the enumeration became non-effective" />
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="hidden" value="false" />
						</bean> -->						
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="contactHours.hrs" parent="dataFieldDescriptor">
		<property name="name" value="hrs" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="INTEGER" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.non-negative.integer" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="minLength" value="1" />
					<property name="maxLength" value="2" />
					<property name="minValue" value="0" />
					<property name="maxValue" value="40" />
				</bean>
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.decimal" />
			</list>
		</property>
	</bean>
	<bean id="contactHours" parent="contactHours-parent" />
	<bean id="course-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="course" />
		<property name="fields">
			<list>
				<ref bean="course.id" />
				<ref bean="course.copyOfCourseId" />
				<ref bean="course.formats" />
				<ref bean="course.termsOffered" />
				<ref bean="course.firstExpectedOffering" />
				<ref bean="course.duration" />
				<ref bean="course.gradingOptions" />
				<ref bean="course.transcriptTitle" />
				<ref bean="course.courseTitle" />
				<ref bean="course.description" />
				<ref bean="course.department" />
				<ref bean="course.subjectArea" />
				<ref bean="course.courseNumberSuffix" />
				<ref bean="course.crossListings" />
				<ref bean="course.versions" />
				<ref bean="course.joints" />
				<ref bean="course.finalResults" />
				<ref bean="course.fees" />
				<ref bean="course.expenditureInfo" />
				<ref bean="course.revenueInfo" />
				<ref bean="course.state" />
				<ref bean="course.type" />
				<ref bean="course.effectiveDate" />
				<ref bean="course.expirationDate" />
				<ref bean="course.academicSubjectOrgs" />
				<ref bean="course.campusLocations" />
				<ref bean="course.primaryInstructor" />
				<ref bean="course.courseSpecificLOs" />
				<ref bean="course.outcomeOptions" />
				<ref bean="course._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="course.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="course.copyOfCourseId" parent="dataFieldDescriptor">
		<property name="name" value="copyOfCourseId" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.kuali.id" />
				<ref bean="constraint.related.cluId" />
			</list>
		</property>
	</bean>
	<bean id="course.formats" parent="dataFieldDescriptor">
		<property name="name" value="formats" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="formats" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="minOccurs" value="1" />
				</bean>
			</list>
		</property>
	</bean>
	<bean id="course.termsOffered" parent="dataFieldDescriptor">
		<property name="name" value="termsOffered" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.repeating" />
				<ref bean="constraint.atp.types" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="id" value="kuali.lookup.termsOfferred" />			
				<property name="searchTypeId" value="atp.search.atpTypes" />
				<property name="name" value="All ATP types" />
				<property name="desc" value="Returns the list of all ATP Types" />
				<property name="usage" value="DEFAULT" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Identifier for an ATP Type" />
							<property name="hidden" value="true" />
							<property name="key" value="atp.resultColumn.atpTypeId" />
							<property name="name" value="ATP Type Identifier" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Type of the ATP." />
							<property name="hidden" value="false" />
							<property name="key" value="atp.resultColumn.atpTypeName" />
							<property name="name" value="Type Name" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="atp.resultColumn.atpTypeId" />
				<property name="resultDisplayKey" value="atp.resultColumn.atpTypeName" />
				<property name="resultSortKey" value="atp.resultColumn.atpTypeName" />
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="course.firstExpectedOffering" parent="dataFieldDescriptor">
		<property name="name" value="firstExpectedOffering" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.atp.in.future" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.atp.types" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.firstexpectedoffering.suggest" />
				<property name="searchTypeId" value="atp.search.advancedAtpSearch" />
				<property name="name" value="Advanced ATP match" />
				<property name="desc" value="Search atp type described by session, duration and year" />
				<property name="widget" value="DROP_DOWN" />
				<property name="searchParamIdKey" value="atp.advancedAtpSearchParam.atpId" />
		        <property name="params">
		            <list>
		                <bean parent="param">
		                    <property name="key" value="atp.advancedAtpSearchParam.atpType" />
		                    <property name="name" value="Atp types" />
		                    <property name="desc" value="Atp types for courses" />
		                    <property name="caseSensitive" value="false" />
		                    <property name="writeAccess" value="NEVER" />
		                    <property name="dataType" value="STRING" />
		                    <property name="optional" value="true" />
							<property name="defaultValueList">
								<list> <!-- this list is not complete -->
									<value>kuali.atp.type.Spring</value>
									<value>kuali.atp.type.Fall</value>
									<value>kuali.atp.type.Session1</value>
									<value>kuali.atp.type.Session2</value>
									<value>kuali.atp.type.Mini-mester1A</value>
									<value>kuali.atp.type.Mini-mester1B</value>																											
								</list>
							</property>                   
		                </bean>
		            </list>
		        </property>
				<property name="resultReturnKey" value="atp.resultColumn.atpId" />
				<property name="resultDisplayKey" value="atp.resultColumn.atpDescrPlain" />
				<property name="resultSortKey" value="atp.resultColumn.atpDescrPlain" />		        				
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="atp.resultColumn.atpId" />
							<property name="name" value="ATP Key" />						
							<property name="desc" value="ATP Key" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
						<bean parent="result">
							<property name="key" value="atp.resultColumn.atpDescrPlain" />
							<property name="name" value="Atp Description" />
							<property name="desc" value="Atp Description" />													
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	
	<bean id="course.gradingOptions" parent="dataFieldDescriptor">
		<property name="name" value="gradingOptions" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<ref bean="constraint.optional" />
			</list>
		</property>
		<property name="initialLookup">
			<ref bean="kuali.lookup.lrcgradetypes" />
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>

	<bean id="course.outcomeOptions" parent="dataFieldDescriptor">
		<property name="name" value="outcomeOptions" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="outcomeOptions" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
                <ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	
	<bean id="outcomeOptions" parent="outcomeOptions-parent" />
	<bean id="outcomeOptions-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="outcomeOptions" />
		<property name="fields">
			<list>
                <ref bean="outcomeOptions.outcomeId" />
				<ref bean="outcomeOptions.outcomeType" />
				<ref bean="outcomeOptions.outcomeCreditValue" />
				<ref bean="outcomeOptions.outcomeMaxCredits" />
				<ref bean="outcomeOptions._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="outcomeOptions.outcomeId" parent="dataFieldDescriptor">
		<property name="name" value="outcomeId" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />		
		<property name="constraints">
			<list>
                <ref bean="constraint.required" />
				<ref bean="constraint.single" />				
			</list>
		</property>
	</bean>
	<bean id="outcomeOptions.outcomeType" parent="dataFieldDescriptor">
		<property name="name" value="outcomeType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />		
		<property name="constraints">
			<list>
                <ref bean="constraint.required" />
				<ref bean="constraint.single" />				
			</list>
		</property>
		<property name="initialLookup" >
			<ref bean="kuali.lookup.lrcoutcometypes" />
		</property>
		<property name="additionalLookups" >
			<list />
		</property>
	</bean>
	<bean id="outcomeOptions.outcomeCreditValue" parent="dataFieldDescriptor">
		<property name="name" value="outcomeCreditValue" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.non-negative.integer" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="minLength" value="1" />
					<property name="maxLength" value="2" />
					<property name="minValue" value="0" />
					<property name="maxValue" value="40" />
				</bean>
                <ref bean="constraint.optional" />
				<ref bean="constraint.decimal" />
			</list>
		</property>
		</bean>
		<bean id="outcomeOptions.outcomeMaxCredits" parent="dataFieldDescriptor">
		<property name="name" value="outcomeMaxCredits" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />				
			</list>
		</property>
	</bean>
	<bean id="outcomeOptions._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>

	<bean id="course.duration" parent="dataFieldDescriptor">
		<property name="name" value="duration" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="courseDuration" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="course.transcriptTitle" parent="dataFieldDescriptor">
		<property name="name" value="transcriptTitle" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="maxLength" value="20" />
				</bean>
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.single.line.text" />
			</list>
		</property>
	</bean>
	<bean id="course.courseTitle" parent="dataFieldDescriptor">
		<property name="name" value="courseTitle" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="maxLength" value="60" />
				</bean>
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.single.line.text" />
			</list>
		</property>
	</bean>
	<bean id="course.description" parent="dataFieldDescriptor">
		<property name="name" value="description" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="description" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="course.department" parent="dataFieldDescriptor">
		<property name="name" value="department" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="proposal.proposerPerson" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.orgId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.admin.departments.suggest" />
				<property name="searchTypeId" value="org.search.generic" />
				<property name="name" value="Organization search" />
				<property name="desc" value="Search for administrative department organization" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="org.queryParam.orgOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="org.queryParam.orgOptionalLongName" />
							<property name="name" value="Organization Name" />
							<property name="desc" value="Long organization name." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to department organizations for this UI context -->
							<property name="key" value="org.queryParam.orgOptionalType" />
							<property name="name" value="Org Type" />
							<property name="desc" value="Type of an organization." />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueList">
								<list>
									<value>kuali.org.Department</value>
									<value>kuali.org.College</value>
								</list>
							</property>
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="org.resultColumn.orgId" />
				<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgId" />
							<property name="name" value="Organization Identifier" />
							<property name="desc" value="Identifier for the organization" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgOptionalLongName" />
							<property name="name" value="Name" />
							<property name="desc" value="Long name for the organization, recorded as the default listing." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.admin.departments.advanced"/>
					<property name="searchTypeId" value="org.search.generic"/>
					<property name="name" value="Organizations"/>
					<property name="desc" value="Search for administrative department organization"/>
					<property name="title" value="Find Organization"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLocation"/>
								<property name="name" value="Location"/>
								<property name="desc" value="Organization location."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalId"/>
								<property name="name" value="Id"/>
								<property name="desc" value="Unique identifier for an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueList">
									<list>
										<value>kuali.org.Department</value>
										<value>kuali.org.College</value>
									</list>
								</property>
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="org.resultColumn.orgId"/>
					<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgId"/>
								<property name="name" value="Organization Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short name for the organization, recorded as the default listing"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the organization, recorded as the default listing."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="course.subjectArea" parent="dataFieldDescriptor">
		<property name="name" value="subjectArea" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="department" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.subject.areas" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="id" value="kuali.enumeration.management.search.subjectAreas" />	
				<property name="name" value="Get enumerations" />
				<property name="desc" value="Get enumerated lists of values given context" />
				<property name="searchTypeId" value="enumeration.management.search" />
				<property name="searchParamIdKey" value="enumeration.queryParam.enumerationCode" />
				<property name="widget" value="SUGGEST_BOX"/>								
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationType" />
							<property name="name" value="Enumeration Type" />
							<property name="desc" value="The type of the enumeration to search" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="defaultValueString" value="kuali.lu.subjectArea" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationOptionalCode" />
							<property name="name" value="Enumeration code" />
							<property name="desc" value="The enumeration code to lookup" />
							<property name="writeAccess" value="ALWAYS" />							
							<property name="dataType" value="STRING" />
							<property name="usage" value="DEFAULT" />							
							<property name="optional" value="true" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="enumeration.resultColumn.code" />
				<property name="resultDisplayKey" value="enumeration.resultColumn.abbrevValue" />
				<property name="resultSortKey" value="enumeration.resultColumn.sortKey" />				
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The internal code of the enumeration value" />
							<property name="hidden" value="true" />
							<property name="key" value="enumeration.resultColumn.code" />
							<property name="name" value="Code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="An abbreviation of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.abbrevValue" />
							<property name="name" value="Abbreviation of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The description of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.value" />
							<property name="name" value="Description of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.effectiveDate" />
							<property name="name" value="Effective date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became non-effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.expirationDate" />
							<property name="name" value="Expiration date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="The description of the type" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.sortKey" />
							<property name="name" value="Key used to sort the results" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="course.courseNumberSuffix" parent="dataFieldDescriptor">
		<property name="name" value="courseNumberSuffix" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="subjectArea" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.available.course.numbers" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="course.crossListings" parent="dataFieldDescriptor">
		<property name="name" value="crossListings" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="crossListings" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="course.versions" parent="dataFieldDescriptor">
		<property name="name" value="versions" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="versions" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="course.joints" parent="dataFieldDescriptor">
		<property name="name" value="joints" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="joints" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="course.finalResults" parent="dataFieldDescriptor">
		<property name="name" value="finalResults" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="course.fees" parent="dataFieldDescriptor">
		<property name="name" value="fees" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="fees" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="course.expenditureInfo" parent="dataFieldDescriptor">
		<property name="name" value="expenditureInfo" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="expenditureInfo" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
			</list>
		</property>
	</bean>
	<bean id="course.revenueInfo" parent="dataFieldDescriptor">
		<property name="name" value="revenueInfo" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="revenueInfo" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
			</list>
		</property>
	</bean>
	<bean id="course.state" parent="dataFieldDescriptor">
		<property name="name" value="state" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.state" />
				<ref bean="constraint.lu.states" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="searchTypeId" value="enumeration.management.search" />
				<property name="name" value="Get enumerations" />
				<property name="desc" value="Get enumerated lists of values given context" />
				<property name="searchParamIdKey" value="enumeration.queryParam.enumerationType" />				
				<property name="widget" value="CHECKBOX_LIST"/>
				<property name="id" value="kuali.lu.lookup.clustate" />
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationType" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="defaultValueString" value="kuali.state" />
							<property name="name" value="Enumeration Type" />
							<property name="desc" value="The type of the enumeration to search" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationCode" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="name" value="Context Value" />
							<property name="desc" value="The enumeration code to lookup" />
							<property name="caseSensitive" value="true" />
						</bean>					
					</list>
				</property>
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The internal code of the enumeration value" />
							<property name="hidden" value="true" />
							<property name="key" value="enumeration.resultColumn.code" />
							<property name="name" value="Code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The description of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.value" />
							<property name="name" value="Description of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="An abbreviation of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.abbrevValue" />
							<property name="name" value="Abbreviation of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.effectiveDate" />
							<property name="name" value="Effective date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became non-effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.expirationDate" />
							<property name="name" value="Expiration date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="The description of the type" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.sortKey" />
							<property name="name" value="Key used to sort the results" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="enumeration.resultColumn.code" />
				<property name="resultDisplayKey" value="enumeration.resultColumn.value" />
				<property name="resultSortKey" value="enumeration.resultColumn.sortKey" />
				<property name="usage" value="DEFAULT" />
			</bean>
		</property>
	</bean>
	<bean id="course.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="ON_CREATE" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.type" />
				<ref bean="constraint.lu.types" />
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lookup.lutypes" />
		</property>
	</bean>

	<bean id="course.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.default.today" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<bean id="course.expirationDate" parent="dataFieldDescriptor">
		<property name="name" value="expirationDate" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.date.time" />
				<ref bean="constraint.cross.greaterthan.effective.date" />
			</list>
		</property>
	</bean>
	<bean id="course.academicSubjectOrgs" parent="dataFieldDescriptor">
		<property name="name" value="academicSubjectOrgs" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.optional" />
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.admin.departments.suggest" />
				<property name="searchTypeId" value="org.search.generic" />
				<property name="name" value="Organization search" />
				<property name="desc" value="Search for administrative department organization" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="org.queryParam.orgOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="org.queryParam.orgOptionalLongName" />
							<property name="name" value="Organization Name" />
							<property name="desc" value="Long organization name." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to department organizations for this UI context -->
							<property name="key" value="org.queryParam.orgOptionalType" />
							<property name="name" value="Org Type" />
							<property name="desc" value="Type of an organization." />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueList">
								<list>
									<value>kuali.org.Department</value>
									<value>kuali.org.College</value>
								</list>
							</property>
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="org.resultColumn.orgId" />
				<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgId" />
							<property name="name" value="Organization Identifier" />
							<property name="desc" value="Identifier for the organization" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<!--
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgShortName" />
							<property name="name" value="Short Name" />
							<property name="desc" value="Short name for the organization, recorded as the default listing." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
-->
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgOptionalLongName" />
							<property name="name" value="Name" />
							<property name="desc" value="Long name for the organization, recorded as the default listing." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.admin.departments.advanced"/>
					<property name="searchTypeId" value="org.search.generic"/>
					<property name="name" value="Organizations"/>
					<property name="desc" value="Search for administrative department organization"/>
					<property name="title" value="Find Organization"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLocation"/>
								<property name="name" value="Location"/>
								<property name="desc" value="Organization location."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalId"/>
								<property name="name" value="Id"/>
								<property name="desc" value="Unique identifier for an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueList">
									<list>
										<value>kuali.org.Department</value>
										<value>kuali.org.College</value>
									</list>
								</property>
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="org.resultColumn.orgId"/>
					<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgId"/>
								<property name="name" value="Organization Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short name for the organization, recorded as the default listing"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the organization, recorded as the default listing."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="course.campusLocations" parent="dataFieldDescriptor">
		<property name="name" value="campusLocations" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.repeating" />
				<ref bean="constraint.code" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="searchTypeId" value="enumeration.management.search" />
				<property name="name" value="Get enumerations" />
				<property name="desc" value="Get enumerated lists of values given context" />
				<property name="searchParamIdKey" value="enumeration.queryParam.enumerationCode" />				
				<property name="widget" value="CHECKBOX_LIST"/>
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationType" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="defaultValueString" value="kuali.lu.campusLocation" />
							<property name="name" value="Enumeration Type" />
							<property name="desc" value="The type of the enumeration to search" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.contextType" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="name" value="Context Type" />
							<property name="desc" value="The type of context being used" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.contextValue" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="name" value="Context Value" />
							<property name="desc" value="The value of the supplied context" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.contextDate" />
							<property name="writeAccess" value="NEVER" />
							<property name="dataType" value="DATE" />
							<property name="optional" value="true" />
							<property name="name" value="Context Date" />
							<property name="desc" value="A date supplied as context" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param">
							<property name="key" value="enumeration.queryParam.enumerationCode" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="name" value="Context Value" />
							<property name="desc" value="The enumeration code to lookup" />
							<property name="caseSensitive" value="true" />
						</bean>					
					</list>
				</property>
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The internal code of the enumeration value" />
							<property name="hidden" value="true" />
							<property name="key" value="enumeration.resultColumn.code" />
							<property name="name" value="Code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="The description of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.value" />
							<property name="name" value="Description of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc"
								value="An abbreviation of the enumeration value" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.abbrevValue" />
							<property name="name" value="Abbreviation of the code" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.effectiveDate" />
							<property name="name" value="Effective date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="TRUNCATED_DATE" />
							<property name="desc"
								value="The date the enumeration became non-effective" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.expirationDate" />
							<property name="name" value="Expiration date" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="The description of the type" />
							<property name="hidden" value="false" />
							<property name="key" value="enumeration.resultColumn.sortKey" />
							<property name="name" value="Key used to sort the results" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="enumeration.resultColumn.code" />
				<property name="resultDisplayKey" value="enumeration.resultColumn.value" />
				<property name="resultSortKey" value="enumeration.resultColumn.sortKey" />
				<property name="usage" value="DEFAULT" />
				<property name="id" value="kuali.lu.lookup.campusLocations" />
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="course.primaryInstructor" parent="dataFieldDescriptor">
		<property name="name" value="primaryInstructor" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="lookupContextPath" value="department" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="searchTypeId" value="person.search.personQuickViewByGivenName" />
				<property name="name" value="All org hierarchies" />
				<property name="desc" value="Returns all org hierarchies, name and id" />
				<property name="searchParamIdKey" value="person.queryParam.personId" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="person.queryParam.personGivenName" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="false" />
							<property name="name" value="Name / Principal Name Fuzzy Search" />
							<property name="desc" value="Name of person" />
							<property name="caseSensitive" value="false" />
							<property name="usage" value="DEFAULT"/>
							<property name="widget" value="TEXT_BOX"/>
						</bean>
							<bean parent="param">
							<property name="key" value="person.queryParam.personId" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="false" />
							<property name="name" value="Person Id" />
							<property name="desc" value="Person Id" />
							<property name="caseSensitive" value="false" />
							<property name="widget" value="TEXT_BOX"/>
						</bean>
					</list>
				</property>
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Internal id" />
					      		<property name="hidden" value="true" />
							<property name="key" value="person.resultColumn.PersonId" />
							<property name="name" value="Internal person id" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Internal id" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.GivenName" />
							<property name="name" value="Given name of person" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Entity id" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.EntityId" />
							<property name="name" value="Entity Id of Person" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Principal name" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.PrincipalName" />
							<property name="name" value="Principal name of person" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Display Name" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.DisplayName" />
							<property name="name" value="Display name of person" />
						</bean>
		     			</list>
		    		</property>
				<property name="resultReturnKey" value="person.resultColumn.PersonId" />
				<property name="resultDisplayKey" value="person.resultColumn.DisplayName" />
				<property name="resultSortKey" value="person.resultColumn.DisplayName" />
				<property name="id" value="kuali.lookup.people" />
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<bean parent="lookup">
				<property name="searchTypeId" value="person.search.personQuickViewByGivenName" />
				<property name="name" value="Person Search" />
				<property name="desc" value="Searches for People by Name or username" />
				<property name="widget" value="ADVANCED_LIGHTBOX"/>
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="person.queryParam.personGivenName" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="false" />
							<property name="name" value="Name and Username Fuzzy Search" />
							<property name="desc" value="Name of person" />
							<property name="caseSensitive" value="false" />
							<property name="usage" value="ADVANCED"/>
							<property name="widget" value="TEXT_BOX"/>
						</bean>
						<bean parent="param">
							<property name="key" value="person.queryParam.personId" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="false" />
							<property name="name" value="Username" />
							<property name="desc" value="Username" />
							<property name="usage" value="ADVANCED"/>
							<property name="caseSensitive" value="false" />
							<property name="widget" value="TEXT_BOX"/>
						</bean>
					</list>
				</property>
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Given name of person" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.GivenName" />
							<property name="name" value="Given Name" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Internal person id" />
							<property name="hidden" value="true" />
							<property name="key" value="person.resultColumn.PersonId" />
							<property name="name" value="Internal id" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Entity Id of Person" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.EntityId" />
							<property name="name" value="Internal ID" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Principal name of person" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.PrincipalName" />
							<property name="name" value="Username" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Display name of person" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.DisplayName" />
							<property name="name" value="Display Name" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="person.resultColumn.PersonId" />
				<property name="resultDisplayKey" value="person.resultColumn.DisplayName" />
				<property name="resultSortKey" value="person.resultColumn.DisplayName" />
				<property name="usage" value="DEFAULT" />
				<property name="id" value="kuali.lookup.people" />
			</bean>
		</list>
	</property>
	</bean>
	<bean id="course.courseSpecificLOs" parent="dataFieldDescriptor">
		<property name="name" value="courseSpecificLOs" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="courseSpecificLOs" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="course._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="course" parent="course-parent" />
	<bean id="description-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="description" />
		<property name="fields">
			<list>
				<ref bean="description.plain" />
				<ref bean="description.formatted" />
			</list>
		</property>
	</bean>
	<bean id="description.plain" parent="dataFieldDescriptor">
		<property name="name" value="plain" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.multi.line.text" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
				</bean>
				<ref bean="constraint.defaultLongVarCharLength"/>
			</list>
		</property>
	</bean>
	<bean id="description.formatted" parent="dataFieldDescriptor">
		<property name="name" value="formatted" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.rich.text" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
				</bean>
				<ref bean="constraint.defaultLongVarCharLength"/>
			</list>
		</property>
	</bean>
	<bean id="description" parent="description-parent" />
	<bean id="courseDuration-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="courseDuration" />
		<property name="fields">
			<list>
				<ref bean="duration.termType" />
				<ref bean="duration.quantity" />
			</list>
		</property>
	</bean>
	<bean id="activityDuration-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="activityDuration" />
		<property name="fields">
			<list>
				<ref bean="duration.timeUnit" />
				<ref bean="duration.quantity" />
			</list>
		</property>
	</bean>
	<bean id="courseDuration" parent="courseDuration-parent" />
	<bean id="activityDuration" parent="activityDuration-parent" />
	<bean id="duration.timeUnit" parent="dataFieldDescriptor">
		<property name="name" value="timeUnit" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.valid.duration.types" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.duration.types" />
			</list>
		</property>
		<property name="initialLookup">
				<ref bean="kuali.lookup.durations" />
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="duration.quantity" parent="dataFieldDescriptor">
		<property name="name" value="quantity" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="INTEGER" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.one" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.integer" />
			</list>
		</property>
	</bean>
	<bean id="duration.termType" parent="dataFieldDescriptor">
		<property name="name" value="termType" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.valid.duration.types" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.duration.types" />
			</list>
		</property>
		<property name="initialLookup">
			<ref bean="kuali.lookup.durations" />
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="expenditureInfo-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="expenditureInfo" />
		<property name="fields">
			<list>
				<ref bean="expenditureInfo.expenditureOrg" />
				<ref bean="expenditureInfo.totalPercentage" />
			</list>
		</property>
	</bean>
	<bean id="expenditureInfo.expenditureOrg" parent="dataFieldDescriptor">
		<property name="name" value="expenditureOrg" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="expenditureOrg" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="maxOccurs" value="20" />
				</bean>
				<ref bean="constraint.optional" />
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="expenditureInfo.totalPercentage" parent="dataFieldDescriptor">
		<property name="name" value="totalPercentage" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
			</list>
		</property>
	</bean>
	<bean id="expenditureInfo" parent="expenditureInfo-parent" />

	<bean id="metaInfo-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="metaInfo" />
		<property name="fields">
			<list>
				<ref bean="metaInfo.versionInd" />
				<ref bean="metaInfo.createTime" />
				<ref bean="metaInfo.createId" />
				<ref bean="metaInfo.updateTime" />
				<ref bean="metaInfo.updateId" />
			</list>
		</property>
	</bean>
	<bean id="metaInfo.versionInd" parent="dataFieldDescriptor">
		<property name="name" value="versionInd" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.calc.meta.versionInd" />
				<ref bean="constraint.read.only" />
			</list>
		</property>
	</bean>
	<bean id="metaInfo.createTime" parent="dataFieldDescriptor">
		<property name="name" value="createTime" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
				<ref bean="constraint.default.now" />
			</list>
		</property>
	</bean>
	<bean id="metaInfo.createId" parent="dataFieldDescriptor">
		<property name="name" value="createId" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.principalId" />
				<ref bean="constraint.default.authenicated.principalId" />
			</list>
		</property>
	</bean>
	<bean id="metaInfo.updateTime" parent="dataFieldDescriptor">
		<property name="name" value="updateTime" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="DATE" />
		<property name="constraints">
			<list>
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.date.time" />
				<ref bean="constraint.calc.now" />
			</list>
		</property>
	</bean>
	<bean id="metaInfo.updateId" parent="dataFieldDescriptor">
		<property name="name" value="updateId" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.principalId" />
				<ref bean="constraint.calc.authenicated.principalId" />
			</list>
		</property>
	</bean>
	<bean id="metaInfo" parent="metaInfo-parent" />
	<bean id="proposal-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="proposal" />
		<property name="fields">
			<list>
				<ref bean="proposal.id" />
				<ref bean="proposal.proposerPerson" />
				<ref bean="proposal.title" />
				<ref bean="proposal.rationale" />
				<ref bean="proposal.referenceType" />
				<ref bean="proposal.references" />
				<ref bean="proposal.metaInfo" />
				<ref bean="proposal._runtimeData" />
			</list>
		</property>
	</bean>
	<bean id="proposal.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="proposal.proposerPerson" parent="dataFieldDescriptor">
		<property name="name" value="proposerPerson" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<ref bean="constraint.required" />
				<ref bean="constraint.repeating" />
				<ref bean="constraint.related.personId" />
			</list>
		</property>
		<property name="initialLookup">
			<bean parent="lookup">
				<property name="searchTypeId" value="person.search.personQuickViewByGivenName" />
				<property name="name" value="All org hierarchies" />
				<property name="desc" value="Returns all org hierarchies, name and id" />
				<property name="params">
					<list>
						<bean parent="param">
							<property name="key" value="person.queryParam.personGivenName" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="false" />
							<property name="name" value="Name Lookup Field" />
							<property name="desc" value="Name of person" />
							<property name="caseSensitive" value="false" />
							<property name="widget" value="SUGGEST_BOX" />
						</bean>
						<bean parent="param">
							<property name="key" value="person.queryParam.personAffiliation" />
							<property name="writeAccess" value="ALWAYS" />
							<property name="dataType" value="STRING" />
							<property name="optional" value="true" />
							<property name="name" value="Affiliatilon Type" />
							<property name="desc"
								value="How the person is affiliated with the school" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="results">
					<list>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Internal id" />
							<property name="hidden" value="true" />
							<property name="key" value="person.resultColumn.PersonId" />
							<property name="name" value="Internal person id" />
						</bean>
						<bean parent="result">
							<property name="dataType" value="STRING" />
							<property name="desc" value="Internal id" />
							<property name="hidden" value="false" />
							<property name="key" value="person.resultColumn.GivenName" />
							<property name="name" value="Given name of person" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="person.resultColumn.PersonId" />
				<property name="resultDisplayKey" value="person.resultColumn.GivenName" />
				<property name="resultSortKey" value="person.resultColumn.GivenName" />
				<property name="usage" value="DEFAULT" />
				<property name="id" value="kuali.lookup.people" />
			</bean>
		</property>
		<property name="additionalLookups">
			<list />
		</property>
	</bean>
	<bean id="proposal.title" parent="dataFieldDescriptor">
		<property name="name" value="title" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.single.line.text" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="proposal.rationale" parent="dataFieldDescriptor">
		<property name="name" value="rationale" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.multi.line.text" />
				<ref bean="constraint.defaultVarCharLength"/>
			</list>
		</property>
	</bean>
	<bean id="proposal.referenceType" parent="dataFieldDescriptor">
		<property name="name" value="referenceType" />
		<property name="writeAccess" value="ON_CREATE" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hard.coded.referenceType.CLU" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.reference.types" />
			</list>
		</property>
	</bean>
	<bean id="proposal.references" parent="dataFieldDescriptor">
		<property name="name" value="references" />
		<property name="writeAccess" value="ON_CREATE" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.related.cluId" />
				<ref bean="constraint.related.cluId" />
				<ref bean="constraint.required" />
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="proposal.metaInfo" parent="dataFieldDescriptor">
		<property name="name" value="metaInfo" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="metaInfo" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.meta.data" />
			</list>
		</property>
	</bean>
	<bean id="proposal._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="proposal" parent="proposal-parent" />
		<bean id="revenueInfo-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="revenueInfo" />
		<property name="fields">
			<list>
				<ref bean="revenueInfo.feeType" />
				<ref bean="revenueInfo.id" />
				<ref bean="revenueInfo.revenueOrg" />
				<ref bean="revenueInfo.totalPercentage" />
			</list>
		</property>
	</bean>
	<bean id="revenueInfo.feeType" parent="dataFieldDescriptor">
		<property name="name" value="feeType" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.hard.coded.feeType.Revenue" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.code" />
			</list>
		</property>
	</bean>
	<bean id="revenueInfo.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.required" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	<bean id="revenueInfo.revenueOrg" parent="dataFieldDescriptor">
		<property name="name" value="revenueOrg" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="revenueOrg" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
				<ref bean="constraint.required" />
				<bean parent="constraint">
					<property name="serverSide" value="false" />
					<property name="maxOccurs" value="20" />
				</bean>
				<ref bean="constraint.optional" />
				<ref bean="constraint.repeating" />
			</list>
		</property>
	</bean>
	<bean id="revenueInfo.totalPercentage" parent="dataFieldDescriptor">
		<property name="name" value="totalPercentage" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.optional" />
			</list>
		</property>
	</bean>
	<bean id="revenueInfo" parent="revenueInfo-parent" />
	<bean id="search-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="search" />
		<property name="fields">
			<list>
				<ref bean="search.findCourse" />
				<ref bean="search.findProposal" />
				<ref bean="search.findCluSet" />
				<ref bean="search.findClusInCluset" />
				<ref bean="search.findClusetRangeParams" />
				<ref bean="search.findCourseTmp" />
				<ref bean="search.findProgram" />
				<ref bean="search.findMajor" />
			</list>
		</property>
	</bean>	
	<bean id="CluSetManagement-parent" abstract="true"
		parent="dataObjectStructure">
		<property name="name" value="CluSetManagement" />
		<property name="fields">
			<list>
				<ref bean="CluSetManagement.cluset" />
				<ref bean="CluSetManagement.search" />				
			</list>
		</property>
	</bean>
	<bean id="CluSetManagement" parent="CluSetManagement-parent" />
	<bean id="CluSetManagement.cluset" parent="dataFieldDescriptor">
		<property name="name" value="cluset" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="cluset" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="CluSetManagement.search" parent="dataFieldDescriptor">
		<property name="name" value="search" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="search" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="cluset-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="cluset" />
		<property name="fields">
			<list>
			    <ref bean="cluset.id"/>
				<ref bean="cluset.organization" />
				<ref bean="cluset.name" />
				<ref bean="cluset.description" />
				<ref bean="cluset.effectiveDate" />
				<ref bean="cluset.expirationDate" />
				<ref bean="cluset.approvedClus"/>
				<ref bean="cluset.proposedClus"/>
				<ref bean="cluset.allClus"/>
				<ref bean="cluset.clusets"/>
				<ref bean="cluset.type"/>
				<ref bean="cluset.clusetRangeEdit"/>
				<ref bean="cluset.clusetRange"/>
				<ref bean="cluset.cluSetRangeViewDetails"/>
			</list>
		</property>
	</bean>
	<bean id="cluset" parent="cluset-parent" />
	<bean id="cluset.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	<bean id="cluset.organization" parent="dataFieldDescriptor">
		<property name="name" value="organization" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
<!-- 				
				<ref bean="constraint.required" />
				<ref bean="constraint.related.orgId" />
 -->
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.admin.departments.suggest" />
				<property name="searchTypeId" value="org.search.generic" />
				<property name="name" value="Organization search" />
				<property name="desc" value="Search for administrative department organization" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="org.queryParam.orgOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="org.queryParam.orgOptionalLongName" />
							<property name="name" value="Organization Name" />
							<property name="desc" value="Long organization name." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to department organizations for this UI context -->
							<property name="key" value="org.queryParam.orgOptionalType" />
							<property name="name" value="Org Type" />
							<property name="desc" value="Type of an organization." />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueList">
								<list>
									<value>kuali.org.Department</value>
									<value>kuali.org.College</value>
								</list>
							</property>
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="org.resultColumn.orgId" />
				<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgId" />
							<property name="name" value="Organization Identifier" />
							<property name="desc" value="Identifier for the organization" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<!-- <bean parent="result">
							<property name="key" value="org.resultColumn.orgShortName" />
							<property name="name" value="Short Name" />
							<property name="desc" value="Short name for the organization, recorded as the default listing." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
-->
						<bean parent="result">
							<property name="key" value="org.resultColumn.orgOptionalLongName" />
							<property name="name" value="Name" />
							<property name="desc" value="Long name for the organization, recorded as the default listing." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.admin.departments.advanced"/>
					<property name="searchTypeId" value="org.search.generic"/>
					<property name="name" value="Organizations"/>
					<property name="desc" value="Search for administrative department organization"/>
					<property name="title" value="Find Organization"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalLocation"/>
								<property name="name" value="Location"/>
								<property name="desc" value="Organization location."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short organization name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalId"/>
								<property name="name" value="Id"/>
								<property name="desc" value="Unique identifier for an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.queryParam.orgOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of an organization."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueList">
									<list>
										<value>kuali.org.Department</value>
										<value>kuali.org.College</value>
									</list>
								</property>
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="org.resultColumn.orgId"/>
					<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgId"/>
								<property name="name" value="Organization Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgShortName"/>
								<property name="name" value="Short Name"/>
								<property name="desc" value="Short name for the organization, recorded as the default listing"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="org.resultColumn.orgOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the organization, recorded as the default listing."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="cluset.name" parent="dataFieldDescriptor">
		<property name="name" value="name" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	<bean id="cluset.description" parent="dataFieldDescriptor">
		<property name="name" value="description" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>
	<bean id="cluset.effectiveDate" parent="dataFieldDescriptor">
		<property name="name" value="effectiveDate" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<bean id="cluset.expirationDate" parent="dataFieldDescriptor">
		<property name="name" value="expirationDate" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="TRUNCATED_DATE" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.date.time" />
			</list>
		</property>
	</bean>
	<!-- this bean will be shared so changes are all in one place to ease maintenance -->
	<bean id="approvedClusFieldParent" parent="dataFieldDescriptor">
		<property name="name" value="approvedClus" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCourse.suggest" />
				<property name="searchTypeId" value="lu.search.generic" />
				<property name="name" value="Find an existing course." />
				<property name="desc" value="Search for courses" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="lu.queryParam.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to credit course for this UI context -->
							<property name="key" value="lu.queryParam.luOptionalType" />
							<property name="name" value="Type" />
							<property name="desc" value="Type of a learning unit" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param"><!-- limit search to only return active clus -->
							<property name="key" value="lu.queryParam.luOptionalState" />
							<property name="name" value="State" />
							<property name="desc" value="CLU State" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueList">
								<list>
									<value>approved</value>
									<value>Active</value>
								</list>
							</property>
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="lu.resultColumn.cluId" />
				<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.cluId" />
							<property name="name" value="Course Identifier" />
							<property name="desc" value="Identifier for the course" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCourse.advanced"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Course"/>
					<property name="desc" value="Search for courses"/>
					<property name="title" value="Course"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Course title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Course description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a course"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
							<bean parent="param"><!-- limit search to only return active clus -->
								<property name="key" value="lu.queryParam.luOptionalState" />
								<property name="name" value="State" />
								<property name="desc" value="CLU State" />
								<property name="writeAccess" value="NEVER" />
								<property name="defaultValueList">
									<list>
										<value>approved</value>
										<value>Active</value>
									</list>
								</property>
								<property name="caseSensitive"
									value="true" />
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value=""/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Code"/>
								<property name="desc" value="Course code."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="cluset.approvedClus" parent="approvedClusFieldParent" />
	<bean id="proposedClusFieldParent" parent="dataFieldDescriptor">
		<property name="name" value="proposedClus" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCourse.suggest" />
				<property name="searchTypeId" value="lu.search.generic" />
				<property name="name" value="Find an existing course." />
				<property name="desc" value="Search for courses" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="lu.queryParam.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to credit course for this UI context -->
							<property name="key" value="lu.queryParam.luOptionalType" />
							<property name="name" value="Type" />
							<property name="desc" value="Type of a learning unit" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
							<property name="caseSensitive" value="true" />
						</bean>
						<bean parent="param"><!-- limit search to only return active clus -->
							<property name="key" value="lu.queryParam.luOptionalState" />
							<property name="name" value="State" />
							<property name="desc" value="State" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueList">
								<list>
									<value>draft</value>
								</list>
							</property>
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="lu.resultColumn.cluId" />
				<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.cluId" />
							<property name="name" value="Course Identifier" />
							<property name="desc" value="Identifier for the course" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCourse.advanced"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Course"/>
					<property name="desc" value="Search for courses"/>
					<property name="title" value="Course"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Course title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Course description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a course"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
							<bean parent="param"><!-- limit search to only return active clus -->
								<property name="key" value="lu.queryParam.luOptionalState" />
								<property name="name" value="State" />
								<property name="desc" value="State" />
								<property name="writeAccess" value="NEVER" />
								<property name="defaultValueList">
									<list>
										<value>draft</value>
									</list>
								</property>
								<property name="caseSensitive" value="true" />
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value=""/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Code"/>
								<property name="desc" value="Course code."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="cluset.proposedClus" parent="proposedClusFieldParent" />
	<bean id="allClusFieldParent" parent="dataFieldDescriptor">
		<property name="name" value="allClus" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCourse.suggest" />
				<property name="searchTypeId" value="lu.search.generic" />
				<property name="name" value="Find an existing course." />
				<property name="desc" value="Search for courses" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="lu.queryParam.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to credit course for this UI context -->
							<property name="key" value="lu.queryParam.luOptionalType" />
							<property name="name" value="Type" />
							<property name="desc" value="Type of a learning unit" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="lu.resultColumn.cluId" />
				<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.cluId" />
							<property name="name" value="Course Identifier" />
							<property name="desc" value="Identifier for the course" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
	</bean>
	<bean id="cluset.allClus" parent="allClusFieldParent" />
	<bean id="clusetsFieldParent" parent="dataFieldDescriptor">
		<property name="name" value="clusets" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCluSet.suggest" />
				<property name="searchTypeId" value="cluset.search.generic" />
				<property name="name" value="Find CluSet" />
				<property name="desc" value="Search for CluSets" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="cluset.queryParam.optionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="cluset.queryParam.optionalName" />
							<property name="name" value="Name" />
							<property name="desc" value="CLU Set Name." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param"><!-- limit search to only return reusable clusets -->
							<property name="key" value="cluset.queryParam.optionalReusable" />
							<property name="name" value="Reusable" />
							<property name="desc" value="Reusable" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="true" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="cluset.resultColumn.cluSetId" />
				<property name="resultDisplayKey" value="cluset.resultColumn.name" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="cluset.resultColumn.cluSetId" />
							<property name="name" value="CLU Set Identifier" />
							<property name="desc" value="Identifier for the Clu Set" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<!--  <bean parent="result">
							<property name="key" value="org.resultColumn.orgShortName" />
							<property name="name" value="Organization Short Name" />
							<property name="desc" value="Short name for the organization, recorded as the default listing" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean> -->
						<bean parent="result">
							<property name="key" value="cluset.resultColumn.name" />
							<property name="name" value="Name" />
							<property name="desc" value="Clu Set Name." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
						<bean parent="result">
							<property name="key" value="cluset.resultColumn.description" />
							<property name="name" value="Description" />						
							<property name="desc" value="Clu Set Description." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCluSet.advanced"/>
					<property name="searchTypeId" value="cluset.search.generic"/>
					<property name="name" value="Clu Set"/>
					<property name="desc" value="Search for Clu Set"/>
					<property name="title" value="Advanced CLU Set Search"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.queryParam.optionalName"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Name of the Clu Set."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.queryParam.optionalDescription"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Clu Set Description."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Course Name"/>
								<property name="desc" value="Course Name"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.queryParam.optionalSubCluSetName"/>
								<property name="name" value="Clu Set Name"/>
								<property name="desc" value="Clu Set Name"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param"><!-- limit search to only return reusable clusets -->
								<property name="key" value="cluset.queryParam.optionalReusable" />
								<property name="name" value="Reusable" />
								<property name="desc" value="Reusable" />
								<property name="writeAccess" value="NEVER" />
								<property name="defaultValueString" value="true" />
								<property name="caseSensitive"
									value="true" />
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="cluset.resultColumn.cluSetId"/>
					<property name="resultDisplayKey" value="cluset.resultColumn.name"/>
					<property name="resultSortKey" value="cluset.resultColumn.name"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.resultColumn.cluSetId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the Clu Set."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.resultColumn.name"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Clu Set Name."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="cluset.clusets" parent="clusetsFieldParent"/>
	<bean id="cluset.type" parent="dataFieldDescriptor">
		<property name="name" value="type" />
		<property name="writeAccess" value="NEVER" />
		<property name="canView" value="false" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
	</bean>
	<bean id="clusetRangeEditFieldParent" parent="dataFieldDescriptor">
		<property name="name" value="clusetRangeEdit" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="name" value="set search parameters" />
				<property name="desc" value="set search parameters" />
				<property name="widget" value="NO_WIDGET"/>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="courseNumberRangeParameters"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Course Number"/>
					<property name="desc" value="Search used to define course range by Course Number"/>
					<property name="title" value="Add Course Range"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="widgetOptions">
						<map>
							<entry key="ADVANCED_LIGHTBOX_PREVIEW_MODE" value="true" />
							<entry key="ADVANCED_LIGHTBOX_ACTION_LABEL" value="Add Course Range" />
						</map>
					</property>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDivision"/>
								<property name="name" value="Department"/>
								<property name="desc" value="Department"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCrsNoRange"/>
								<property name="name" value="Course Number Range"/>
								<property name="desc" value="Course Number Range"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Code of the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Long Name of the course"/>
								<property name="desc" value="Long Name of the course"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
				<!-- 2nd type of search -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lo.lookup.SingleUseLo.description.advanced1"/>
					<property name="searchTypeId" value="lo.search.loByDescCrossSearch"/>
					<property name="name" value="Learning Objective"/>
					<property name="desc" value="Search for descriptions in existing learning objectives."/>
					<property name="title" value="Learning Objective"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="widgetOptions">
						<map>
							<entry key="ADVANCED_LIGHTBOX_PREVIEW_MODE" value="true" />
							<entry key="ADVANCED_LIGHTBOX_ACTION_LABEL" value="Add Course Range" />
						</map>
					</property>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.queryParam.loDescPlain"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Description of learning objective."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="REQUIRED"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lo.resultColumn.loId"/>
					<property name="resultDisplayKey" value="lo.resultColumn.loDescPlain"/>
					<property name="resultSortKey" value="lo.resultColumn.loDescPlain"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loId"/>
								<property name="name" value="LO Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loCluCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course code"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loCluOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Title of Clu."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
				<!-- 3rd type of search -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="effectiveDateRangeParameters"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Effective Date Range"/>
					<property name="desc" value="Search used to define course range by effective dates"/>
					<property name="title" value="Add Course Range"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="widgetOptions">
						<map>
							<entry key="ADVANCED_LIGHTBOX_PREVIEW_MODE" value="true" />
							<entry key="ADVANCED_LIGHTBOX_ACTION_LABEL" value="Add Course Range" />
						</map>
					</property>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalEffectiveDate1"/>
								<property name="name" value="Effective From"/>
								<property name="desc" value="Effective Date a course."/>
								<property name="dataType" value="TRUNCATED_DATE"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalEffectiveDate2"/>
								<property name="name" value="Effective To"/>
								<property name="desc" value="Effective Date a course."/>
								<property name="dataType" value="TRUNCATED_DATE"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Code of the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Long Name of the course"/>
								<property name="desc" value="Long Name of the course"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="cluset.clusetRangeEdit" parent="clusetRangeEditFieldParent"/>

	<bean id="search.findClusetRangeParams" parent="dataFieldDescriptor">
		<property name="name" value="findClusetRangeParams" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="name" value="set search parameters" />
				<property name="desc" value="set search parameters" />
				<property name="widget" value="NO_WIDGET"/>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<!-- lu.search.generic -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="courseNumberRangeParameters"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Course Number"/>
					<property name="desc" value="Search used to define course range by Course Number"/>
					<property name="title" value="Add Course Range"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="widgetOptions">
						<map>
							<entry key="ADVANCED_LIGHTBOX_PREVIEW_MODE" value="true" />
							<entry key="ADVANCED_LIGHTBOX_ACTION_LABEL" value="Add Course Range" />
						</map>
					</property>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDivision"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course Number"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCrsNoRange"/>
								<property name="name" value="Course Number Range"/>
								<property name="desc" value="Course Number Range"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalEffectiveDate1"/>
								<property name="name" value="Effective From"/>
								<property name="desc" value="Effective Date a course."/>
								<property name="dataType" value="TRUNCATED_DATE"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalEffectiveDate2"/>
								<property name="name" value="Effective To"/>
								<property name="desc" value="Effective Date a course."/>
								<property name="dataType" value="TRUNCATED_DATE"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Code of the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Long Name of the course"/>
								<property name="desc" value="Long Name of the course"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
				<!-- lo.search.loByDescCrossSearch -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lo.lookup.SingleUseLo.description.advanced1"/>
					<property name="searchTypeId" value="lo.search.loByDescCrossSearch"/>
					<property name="name" value="Learning Objective"/>
					<property name="desc" value="Search for descriptions in existing learning objectives."/>
					<property name="title" value="Learning Objective"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="widgetOptions">
						<map>
							<entry key="ADVANCED_LIGHTBOX_PREVIEW_MODE" value="true" />
							<entry key="ADVANCED_LIGHTBOX_ACTION_LABEL" value="Add Course Range" />
						</map>
					</property>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.queryParam.loDescPlain"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Description of learning objective."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="REQUIRED"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="TEXT_BOX"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lo.resultColumn.loId"/>
					<property name="resultDisplayKey" value="lo.resultColumn.loDescPlain"/>
					<property name="resultSortKey" value="lo.resultColumn.loDescPlain"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loId"/>
								<property name="name" value="LO Identifier"/>
								<property name="desc" value="Identifier for the organization"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loCluCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course code"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lo.resultColumn.loCluOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Title of Clu."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>


	<bean id="cluset.clusetRange" parent="dataFieldDescriptor">
		<property name="name" value="clusetRange" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="clusetRange" />
		<property name="dataType" value="DATA" />
	</bean>
	<bean id="cluset.cluSetRangeViewDetails" parent="dataFieldDescriptor">
		<property name="name" value="cluSetRangeViewDetails" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.repeating" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCourse.suggest" />
				<property name="searchTypeId" value="lu.search.generic" />
				<property name="name" value="Find an existing course." />
				<property name="desc" value="Search for courses" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="lu.queryParam.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to credit course for this UI context -->
							<property name="key" value="lu.queryParam.luOptionalType" />
							<property name="name" value="Type" />
							<property name="desc" value="Type of a learning unit" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
							<property name="caseSensitive" value="true" />
						</bean>					
					</list>
				</property>
				<property name="resultReturnKey" value="lu.resultColumn.cluId" />
				<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.cluId" />
							<property name="name" value="Course Identifier" />
							<property name="desc" value="Identifier for the course" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
	</bean>
	<bean id="cluset.search" parent="dataFieldDescriptor">
		<property name="name" value="search" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="search" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
			</list>
		</property>
	</bean>
	
	<bean id="clusetRange" parent="clusetRange-parent" />
	<bean id="clusetRange-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="clusetRange" />
		<property name="fields">
			<list>
				<ref bean="clusetRange.id" />
				<ref bean="clusetRange.searchTypeKey" />
				<ref bean="clusetRange.queryParams" />
			</list>
		</property>
	</bean>
	
	<bean id="clusetRange.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>

	<bean id="clusetRange.searchTypeKey" parent="dataFieldDescriptor">
		<property name="name" value="searchTypeKey" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>

	<bean id="clusetRange.queryParams" parent="dataFieldDescriptor">
		<property name="name" value="queryParams" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="queryParams" />
		<property name="dataType" value="DATA" />
	</bean>
	
	<bean id="queryParams" parent="queryParams-parent"/>
	<bean id="queryParams-parent" abstract="true" parent="dataObjectStructure">
		<property name="name" value="queryParams" />
		<property name="fields">
			<list>
				<ref bean="queryParams.value" />
<!-- 				<ref bean="queryParams.listValue" /> -->
				<ref bean="queryParams.key" />
			</list>
		</property>
	</bean>

	<bean id="queryParams.value" parent="dataFieldDescriptor">
		<property name="name" value="value" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
	</bean>
	<bean id="queryParams.key" parent="dataFieldDescriptor">
		<property name="name" value="key" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
	</bean>

	<bean id="clusets._runtimeData" parent="dataFieldDescriptor">
		<property name="name" value="_runtimeData" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataObjectStructure" ref="_runtimeData" />
		<property name="dataType" value="DATA" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>

	<bean id="clusets.id" parent="dataFieldDescriptor">
		<property name="name" value="id" />
		<property name="writeAccess" value="NEVER" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.hidden" />
				<ref bean="constraint.read.only" />
				<ref bean="constraint.single" />
				<ref bean="constraint.kuali.id" />
			</list>
		</property>
	</bean>
	
	<bean id="clusets.name" parent="dataFieldDescriptor">
		<property name="name" value="name" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="defaultValue" value="" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
			</list>
		</property>
	</bean>

	<bean id="search.findCourse" parent="dataFieldDescriptor">  <!-- what the bean id should be so it loads for CourseConfigurer? -->
		<property name="name" value="findCourse" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.cluId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCourse.suggest" />
				<property name="searchTypeId" value="lu.search.generic" />
				<property name="name" value="Find an existing course." />
				<property name="desc" value="Search for courses" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="lu.queryParam.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">   <!-- limit search to credit course for this UI context -->
							<property name="key" value="lu.queryParam.luOptionalType" />
							<property name="name" value="Type" />
							<property name="desc" value="Type of a learning unit" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
							<property name="caseSensitive" value="true" />
						</bean>					
					</list>
				</property>
				<property name="resultReturnKey" value="lu.resultColumn.cluId" />
				<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.cluId" />
							<property name="name" value="Course Identifier" />
							<property name="desc" value="Identifier for the course" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Course code." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCourse.advanced"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Course"/>
					<property name="desc" value="Search for courses"/>
					<property name="title" value="Course"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Course title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
     								<property name="childLookup" ref="kuali.lu.lookup.findCourse.longName" />								
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Course description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a course"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Code"/>
								<property name="desc" value="Course code."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="kuali.lu.lookup.findCourse.longName" parent="lookup">
		<property name="id" value="kuali.lu.lookup.suggest" />
		<property name="searchTypeId" value="lu.search.generic" />
		<property name="name" value="Suggest Course Name" />
		<property name="desc" value="Search for course names" />
		<property name="widget" value="SUGGEST_BOX"/>
		<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
		<property name="params">
			<list>
				<bean parent="param">   <!-- suggest box entry definition -->
					<property name="key" value="lu.queryParam.luOptionalLongName" />
					<property name="name" value="Title" />
					<property name="desc" value="Course title." />
					<property name="writeAccess" value="ALWAYS" />
					<property name="usage" value="DEFAULT" />
				</bean>
				<bean parent="param">
					<property name="key" value="lu.queryParam.luOptionalType" />
					<property name="name" value="Lu Type" />
					<property name="desc" value="Type of a learning unit" />
					<property name="writeAccess" value="NEVER" />
					<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
					<property name="caseSensitive" value="true" />
				</bean>
			</list>
		</property>
		<property name="resultReturnKey" value="lu.resultColumn.cluId" />
		<property name="resultDisplayKey" value="lu.resultColumn.luOptionalLongName" />
		<property name="resultSortKey" value="" />
		<property name="results">
			<list>
				<bean parent="result">
					<property name="key" value="lu.resultColumn.cluId" />
					<property name="name" value="Course Identifier" />
					<property name="desc" value="Identifier for the course" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="true" />
				</bean>
				<bean parent="result">
					<property name="key" value="lu.resultColumn.luOptionalLongName" />
					<property name="name" value="Title" />
					<property name="desc" value="Course title." />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
			</list>
		</property>
	</bean>	
	
	<bean id="search.findCourseTmp" parent="dataFieldDescriptor">  <!-- what the bean id should be so it loads for CourseConfigurer? -->
		<property name="name" value="findCourseTmp" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.cluId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="name" value="Find Courses" />
				<property name="desc" value="Search for courses" />
				<property name="widget" value="NO_WIDGET"/>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCourse.advanced"/>
					<property name="searchTypeId" value="lu.search.mostCurrent.union"/>
					<property name="name" value="Course"/>
					<property name="desc" value="Search for courses"/>
					<property name="title" value="Course"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Course title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Course Number"/>
								<property name="desc" value="Course number."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalStudySubjectArea"/>
								<property name="name" value="Department Code"/>
								<property name="desc" value="Department Code."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Phrase in Description"/>
								<property name="desc" value="Course description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalStatus"/>
								<property name="name" value="Status"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a course"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
                                <property name="usage" value="CUSTOM"/>                                
							</bean>
							<bean parent="param"><!-- limit search to only return approved clus -->
								<property name="key" value="lu.queryParam.luOptionalState" />
								<property name="name" value="CLU State" />
								<property name="desc" value="CLU State" />
                                <property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER" />
                                <property name="optional" value="true"/>
                                <property name="caseSensitive" value="true" />
								<property name="defaultValueList">
									<list>
										<value>Approved</value>
										<value>Active</value>
										<value>Retired</value>
										<!--  need to add more states here (not draft or withdrawn) -->
									</list>
								</property>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Long name for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Code"/>
								<property name="desc" value="Course code."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalState"/>
								<property name="name" value="State"/>
								<property name="desc" value="State of the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>			
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Course level."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalVersionIndId"/>
								<property name="name" value="VersionIndId"/>
								<property name="desc" value="Version Independent Id of this course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalVersionedFromId"/>
								<property name="name" value="VersionedFromId"/>
								<property name="desc" value="Id of this course this was versioned from."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalVersionStartDate"/>
								<property name="name" value="VersionStartDate"/>
								<property name="desc" value="Version Start Date"/>
								<property name="dataType" value="DATE"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalVersionEndDate"/>
								<property name="name" value="VersionEndDate"/>
								<property name="desc" value="Version End Date"/>
								<property name="dataType" value="DATE"/>
								<property name="hidden" value="true"/>
							</bean>												
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Description for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>			
							
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>	
	<bean id="search.findProposal" parent="dataFieldDescriptor">
		<property name="name" value="findProposal" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.cluId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="name" value="Find Course Proposals" />
				<property name="desc" value="Search for Course Proposals" />
				<property name="widget" value="NO_WIDGET"/>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.proposal.lookup.Proposals"/>
					<property name="searchTypeId" value="proposal.search.generic"/>
					<property name="name" value="Proposal"/>
					<property name="desc" value="Search for proposals"/>
					<property name="title" value="Find Proposal"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="proposal.queryParam.proposalId"/>
								<property name="name" value="Id"/>
								<property name="desc" value="Unique identifier for a proposal."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="DEFAULT"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="proposal.queryParam.proposalOptionalName"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Name."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="proposal.resultColumn.proposalId"/>
					<property name="resultDisplayKey" value="proposal.resultColumn.proposalOptionalName"/>
					<property name="resultSortKey" value="proposal.resultColumn.proposalOptionalName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="proposal.resultColumn.proposalId"/>
								<property name="name" value="Id"/>
								<property name="desc" value="Id for the proposal."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="proposal.resultColumn.proposalOptionalName"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Name for the proposal."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>	
	<bean id="search.findCluSet" parent="dataFieldDescriptor">
		<property name="name" value="findCluSet" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<!--
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				- TODO implement a validator for cluSetId -
				- ref bean="constraint.related.cluId" / -
			</list>
		</property>
		 -->
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findCluSet.suggest" />
				<property name="searchTypeId" value="cluset.search.generic" />
				<property name="name" value="Find CluSet" />
				<property name="desc" value="Search for CluSets" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="cluset.queryParam.optionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="cluset.queryParam.optionalName" />
							<property name="name" value="Name" />
							<property name="desc" value="CLU Set Name." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param"><!-- limit search to only return reusable clusets -->
							<property name="key" value="cluset.queryParam.optionalReusable" />
							<property name="name" value="Reusable" />
							<property name="desc" value="Reusable" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="true" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="cluset.resultColumn.cluSetId" />
				<property name="resultDisplayKey" value="cluset.resultColumn.name" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="cluset.resultColumn.cluSetId" />
							<property name="name" value="CLU Set Identifier" />
							<property name="desc" value="Identifier for the Clu Set" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<!--  <bean parent="result">
							<property name="key" value="org.resultColumn.orgShortName" />
							<property name="name" value="Organization Short Name" />
							<property name="desc" value="Short name for the organization, recorded as the default listing" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean> -->
						<bean parent="result">
							<property name="key" value="cluset.resultColumn.name" />
							<property name="name" value="Name" />
							<property name="desc" value="Clu Set Name." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
						<bean parent="result">
							<property name="key" value="cluset.resultColumn.description" />
							<property name="name" value="Description" />						
							<property name="desc" value="Clu Set Description." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCluSet.advanced"/>
					<property name="searchTypeId" value="cluset.search.generic"/>
					<property name="name" value="Clu Set"/>
					<property name="desc" value="Search for Clu Set"/>
					<property name="title" value="Advanced CLU Set Search"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.queryParam.optionalName"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Name of the Clu Set."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.queryParam.optionalDescription"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Clu Set Description."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Course Name"/>
								<property name="desc" value="Course Name"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.queryParam.optionalSubCluSetName"/>
								<property name="name" value="Clu Set Name"/>
								<property name="desc" value="Clu Set Name"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param"><!-- limit search to only return reusable clusets -->
								<property name="key" value="cluset.queryParam.optionalReusable" />
								<property name="name" value="Reusable" />
								<property name="desc" value="Reusable" />
								<property name="writeAccess" value="NEVER" />
								<property name="defaultValueString" value="true" />
								<property name="caseSensitive" value="true" />
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="cluset.resultColumn.cluSetId"/>
					<property name="resultDisplayKey" value="cluset.resultColumn.name"/>
					<property name="resultSortKey" value="cluset.resultColumn.name"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.resultColumn.cluSetId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the Clu Set."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.resultColumn.name"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Clu Set Name."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="search.findClusInCluset" parent="dataFieldDescriptor">
		<property name="name" value="findClusInCluset" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="initialLookup">
			<!--  no widget here, just link to advanced search lightbox -->
			<bean parent="lookup">
				<property name="name" value="Search for Clus In a Cluset" />
				<property name="desc" value="Search for Clus In a Cluset" />
				<property name="widget" value="NO_WIDGET"/>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findCluSet.advanced"/>
					<property name="searchTypeId" value="lu.search.clusInCluset"/>
					<property name="name" value="Clu in Clu Set"/>
					<property name="desc" value="Search for Clus in a Clu Set"/>
					<property name="title" value="Advanced CLUs in CluSet Search"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="cluset.queryParam.optionalId"/>
								<property name="name" value="Clu Set Id"/>
								<property name="desc" value="Id of the Clu Set."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.cluOfficialIdentifier.longName"/>
					<property name="resultSortKey" value="lu.resultColumn.cluOfficialIdentifier.longName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for Clu."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluOfficialIdentifier.longName"/>
								<property name="name" value="Name"/>
								<property name="desc" value="Clu Name."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="search.findProgram" parent="dataFieldDescriptor">
		<property name="name" value="findProgram" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.cluId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="id" value="kuali.lu.lookup.findProgram.suggest" />
				<property name="searchTypeId" value="lu.search.generic" />
				<property name="name" value="Find an existing program." />
				<property name="desc" value="Search for programs" />
				<property name="widget" value="SUGGEST_BOX"/>
				<property name="searchParamIdKey" value="lu.queryParam.luOptionalId" />
				<property name="params">
					<list>
						<bean parent="param">   <!-- suggest box entry definition -->
							<property name="key" value="lu.queryParam.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Program code." />
							<property name="writeAccess" value="ALWAYS" />
							<property name="usage" value="DEFAULT" />
						</bean>
						<bean parent="param">
							<property name="key" value="lu.queryParam.luOptionalType" />
							<property name="name" value="Type" />
							<property name="desc" value="Type of a learning unit" />
							<property name="writeAccess" value="NEVER" />
							<property name="defaultValueString" value="kuali.lu.type.Program" />
							<property name="caseSensitive" value="true" />
						</bean>
					</list>
				</property>
				<property name="resultReturnKey" value="lu.resultColumn.cluId" />
				<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode" />
				<property name="resultSortKey" value="" />
				<property name="results">
					<list>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.cluId" />
							<property name="name" value="Program Identifier" />
							<property name="desc" value="Identifier for the program" />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="true" />
						</bean>
						<bean parent="result">
							<property name="key" value="lu.resultColumn.luOptionalCode" />
							<property name="name" value="Code" />
							<property name="desc" value="Program code." />
							<property name="dataType" value="STRING" />
							<property name="hidden" value="false" />
						</bean>
					</list>
				</property>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findProgram.advanced"/>
					<property name="searchTypeId" value="lu.search.generic"/>
					<property name="name" value="Program"/>
					<property name="desc" value="Search for programs"/>
					<property name="title" value="Find Program"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName"/>
								<property name="name" value="Title"/>
								<property name="desc" value="Program title."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Program Number"/>
								<property name="desc" value="Program number."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalDescr"/>
								<property name="name" value="Description"/>
								<property name="desc" value="Program description"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
							</bean>							
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Program level."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="true"/>
								<property name="usage" value="CUSTOM"/>
							</bean>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalType"/>
								<property name="name" value="Type"/>
								<property name="desc" value="Type of a program"/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER"/>
								<property name="defaultValueString" value="kuali.lu.type.Program" />
								<property name="optional" value="true"/>
								<property name="caseSensitive" value="true"/>
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the program"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Code"/>
								<property name="desc" value="Program code."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLevel"/>
								<property name="name" value="Level"/>
								<property name="desc" value="Program level."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalLongName"/>
								<property name="name" value="Long Name"/>
								<property name="desc" value="Long name for the program."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>	
	<bean id="search" parent="search-parent" />


	<bean id="search.findMajor" parent="dataFieldDescriptor">  <!-- what the bean id should be so it loads for CourseConfigurer? -->
		<property name="name" value="findMajor" />
		<property name="writeAccess" value="ALWAYS" />
		<property name="onChangeRefreshMetadata" value="false" />
		<property name="dataType" value="STRING" />
		<property name="constraints">
			<list>
				<ref bean="constraint.single" />
				<ref bean="constraint.required" />
				<ref bean="constraint.single" />
				<ref bean="constraint.related.cluId" />
			</list>
		</property>
		<property name="initialLookup">
			<!--  define configuration for a suggest box -->
			<bean parent="lookup">
				<property name="name" value="Find Programs (major disciplines)" />
				<property name="desc" value="Search for Major Disciplines" />
				<property name="widget" value="NO_WIDGET"/>
			</bean>
		</property>
		<property name="additionalLookups">
			<list>
				<!-- definition of advanced search window -->
				<bean parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="id" value="kuali.lu.lookup.findMajor.advanced"/>
					<property name="searchTypeId" value="lu.search.union.majors"/>
					<property name="name" value="Majors"/>
					<property name="desc" value="Search for Major Disciplines"/>
					<property name="title" value="Find Major"/>
					<property name="widget" value="ADVANCED_LIGHTBOX"/>
					<property name="params">
						<list>
							<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalCode"/>
								<property name="name" value="Code"/>
								<property name="desc" value="Major Code."/>
								<property name="dataType" value="STRING"/>
								<property name="writeAccess" value="ALWAYS"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>	
                            <bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.queryParam.luOptionalLongName" />
								<property name="name" value="Title" />
								<property name="desc" value="Long title" />
								<property name="writeAccess" value="ALWAYS" />
								<property name="dataType" value="STRING"/>
								<property name="caseSensitive" value="false"/>
								<property name="usage" value="ADVANCED_CUSTOM"/>
								<property name="widget" value="SUGGEST_BOX"/>
							</bean>					
							<bean parent="param">
								<property name="key" value="lu.queryParam.luOptionalState" />
								<property name="name" value="Program Status" />
								<property name="desc" value="CLU State" />
                                <property name="dataType" value="STRING"/>
								<property name="writeAccess" value="NEVER" />
                                <property name="optional" value="true"/>
                                <property name="caseSensitive" value="false" />
                                <property name="widget" value="DROPDOWN_LIST"/>
								<property name="defaultValueList">
									<list>
									<!-- 
										<value>draft</value>
										<value>submitted</value>
										<value>withdrawn</value>
										<value>approved</value>
									-->
										<value>draft</value>
										<value>active</value>
										<value>Draft</value>
										<value>Active</value>
									</list>
								</property>	
							</bean>
						</list>
					</property>
					<property name="resultReturnKey" value="lu.resultColumn.cluId"/>
					<property name="resultDisplayKey" value="lu.resultColumn.luOptionalLongName"/>
					<property name="resultSortKey" value="lu.resultColumn.luOptionalCode"/>
					<property name="results">
						<list>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.cluId"/>
								<property name="name" value="Identifier"/>
								<property name="desc" value="Identifier for the course."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
							<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalCode"/>
								<property name="name" value="Code"/>
								<property name="desc" value="Course code."/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
                            <bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalState"/>
								<property name="name" value="Program Status"/>
								<property name="desc" value="State of the Major Discipline"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
                            <bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalMajorName"/>
								<property name="name" value="Major"/>
								<property name="desc" value="Long Major name"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
                            <bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalVariationName"/>
								<property name="name" value="Specialization"/>
								<property name="desc" value="Long name of Variation"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="false"/>
							</bean>
	                            <bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
								<property name="key" value="lu.resultColumn.luOptionalType"/>
								<property name="name" value="Clu Type"/>
								<property name="desc" value="Type of this CLU"/>
								<property name="dataType" value="STRING"/>
								<property name="hidden" value="true"/>
							</bean>
                        </list>
					</property>
				</bean>
			</list>
		</property>
	</bean>	
	
	<!--  common lookups -->
	<bean id="kuali.lookup.durations" parent="lookup">
		<property name="id" value="kuali.lookup.durations" />
		<property name="searchTypeId" value="atp.search.atpDurationTypes" />
		<property name="name" value="All ATP Duration Types" />
		<property name="desc" value="Returns the list of all ATP Duration Types" />
		<property name="widget" value="DROP_DOWN" />
		<property name="searchParamIdKey" value="atp.queryParam.atpDurationType" />	
		<property name="results">
			<list>
				<bean parent="result">
					<property name="key" value="atp.resultColumn.atpDurType" />
					<property name="name" value="ATP Duration Type Key" />
					<property name="desc" value="ATP Duration Type Key" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
				<bean parent="result">
					<property name="key" value="atp.resultColumn.atpDurTypeName" />
					<property name="name" value="Duration Type Name" />
					<property name="desc" value="Duration Type Name" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
			</list>
		</property>
		<property name="resultReturnKey" value="atp.resultColumn.atpDurType" />
		<property name="resultDisplayKey" value="atp.resultColumn.atpDurTypeName" />
		<property name="resultSortKey" value="atp.resultColumn.atpDurTypeName" />
	</bean>

 	<bean id="kuali.lookup.lutypes" parent="lookup">
		<property name="id" value="kuali.lookup.lutypes" />
		<property name="searchTypeId" value="lu.search.all.lu.Types" />
		<property name="name" value="All Lu Types" />
		<property name="desc" value="Returns the list of all Lu Types" />
		<property name="widget" value="DROP_DOWN" />
		<property name="searchParamIdKey" value="lu.queryParam.luOptionalLuType" />
        <property name="resultReturnKey" value="lu.resultColumn.luTypeKey" />
        <property name="resultDisplayKey" value="lu.resultColumn.luTypeName" />
        <property name="resultSortKey" value="lu.resultColumn.luTypeName" />
		<property name="results">
			<list>
				<bean parent="result">
					<property name="key" value="lu.resultColumn.luTypeKey" />
					<property name="name" value="Lu Type Key" />
					<property name="desc" value="Lu Type Key" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
				<bean parent="result">
					<property name="key" value="lu.resultColumn.luTypeName" />
					<property name="name" value="Lu Type Name" />
					<property name="desc" value="Lu Type Name" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
				<bean parent="result">
					<property name="key" value="lu.resultColumn.luTypeDesc" />
					<property name="name" value="Lu Type Desc" />
					<property name="desc" value="Lu Type Desc" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
				<bean parent="result">
					<property name="key" value="lu.resultColumn.luTypeEffDt" />
					<property name="name" value="Lu Type Effective Date" />
					<property name="desc" value="Lu Type Effective Date" />
					<property name="dataType" value="TRUNCATED_DATE" />
					<property name="hidden" value="false" />
				</bean>
				<bean parent="result">
					<property name="key" value="lu.resultColumn.luTypeExpDt" />
					<property name="name" value="Lu Type Expiry Date" />
					<property name="desc" value="Lu Type Expiry Date" />
					<property name="dataType" value="TRUNCATED_DATE" />
					<property name="hidden" value="false" />
				</bean>

			</list>
		</property>
	</bean>

	<!--  define configuration for a suggest box -->
	<bean id="kuali.lu.lookup.admin.departments.suggest" parent="lookup">
		<property name="searchTypeId" value="org.search.generic" />
		<property name="name" value="Organization search" />
		<property name="desc" value="Search for administrative department organization" />
		<property name="widget" value="SUGGEST_BOX"/>
		<property name="searchParamIdKey" value="org.queryParam.orgOptionalId" />
		<property name="params">
			<list>
				<bean parent="param">   <!-- suggest box entry definition -->
					<property name="key" value="org.queryParam.orgOptionalLongName" />
					<property name="name" value="Organization Name" />
					<property name="desc" value="Long organization name." />
					<property name="writeAccess" value="ALWAYS" />
					<property name="usage" value="DEFAULT" />
				</bean>
				<bean parent="param">   <!-- limit search to department organizations for this UI context -->
					<property name="key" value="org.queryParam.orgOptionalType" />
					<property name="name" value="Org Type" />
					<property name="desc" value="Type of an organization." />
					<property name="writeAccess" value="NEVER" />
					<property name="defaultValueList">
						<list>
							<value>kuali.org.Department</value>
							<value>kuali.org.College</value>
						</list>
					</property>
					<property name="caseSensitive" value="true" />
				</bean>
			</list>
		</property>
		<property name="resultReturnKey" value="org.resultColumn.orgId" />
		<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName" />
		<property name="resultSortKey" value="" />
		<property name="results">
			<list>
				<bean parent="result">
					<property name="key" value="org.resultColumn.orgId" />
					<property name="name" value="Organization Identifier" />
					<property name="desc" value="Identifier for the organization" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="true" />
				</bean>
				<bean parent="result">
					<property name="key" value="org.resultColumn.orgOptionalLongName" />
					<property name="name" value="Name" />
					<property name="desc" value="Long name for the organization, recorded as the default listing." />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
			</list>
		</property>
	</bean>
	<!-- definition of advanced search window -->
	<bean id="kuali.lu.lookup.admin.departments.advanced" parent="lookup" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
		<property name="searchTypeId" value="org.search.generic"/>
		<property name="name" value="Organizations"/>
		<property name="desc" value="Search for administrative department organization"/>
		<property name="title" value="Find Organization"/>
		<property name="widget" value="ADVANCED_LIGHTBOX"/>
		<property name="params">
			<list>
				<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.queryParam.orgOptionalLongName"/>
					<property name="name" value="Long Name"/>
					<property name="desc" value="Long organization name."/>
					<property name="dataType" value="STRING"/>
					<property name="writeAccess" value="ALWAYS"/>
					<property name="caseSensitive" value="false"/>
					<property name="usage" value="ADVANCED_CUSTOM"/>
					<property name="widget" value="SUGGEST_BOX"/>
				</bean>
				<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.queryParam.orgOptionalLocation"/>
					<property name="name" value="Location"/>
					<property name="desc" value="Organization location."/>
					<property name="dataType" value="STRING"/>
					<property name="writeAccess" value="ALWAYS"/>
					<property name="caseSensitive" value="false"/>
					<property name="usage" value="ADVANCED_CUSTOM"/>
					<property name="widget" value="TEXT_BOX"/>
				</bean>
				<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.queryParam.orgOptionalShortName"/>
					<property name="name" value="Short Name"/>
					<property name="desc" value="Short organization name."/>
					<property name="dataType" value="STRING"/>
					<property name="writeAccess" value="ALWAYS"/>
					<property name="caseSensitive" value="false"/>
					<property name="usage" value="ADVANCED_CUSTOM"/>
					<property name="widget" value="SUGGEST_BOX"/>
				</bean>
				<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.queryParam.orgOptionalId"/>
					<property name="name" value="Id"/>
					<property name="desc" value="Unique identifier for an organization."/>
					<property name="dataType" value="STRING"/>
					<property name="writeAccess" value="ALWAYS"/>
					<property name="caseSensitive" value="true"/>
					<property name="usage" value="CUSTOM"/>
				</bean>
				<bean parent="param" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.queryParam.orgOptionalType"/>
					<property name="name" value="Type"/>
					<property name="desc" value="Type of an organization."/>
					<property name="dataType" value="STRING"/>
					<property name="writeAccess" value="NEVER"/>
					<property name="defaultValueList">
						<list>
							<value>kuali.org.Department</value>
							<value>kuali.org.College</value>
						</list>
					</property>
					<property name="optional" value="true"/>
					<property name="caseSensitive" value="true"/>
				</bean>
			</list>
		</property>
		<property name="resultReturnKey" value="org.resultColumn.orgId"/>
		<property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName"/>
		<property name="resultSortKey" value="org.resultColumn.orgShortName"/>
		<property name="results">
			<list>
				<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.resultColumn.orgId"/>
					<property name="name" value="Organization Identifier"/>
					<property name="desc" value="Identifier for the organization"/>
					<property name="dataType" value="STRING"/>
					<property name="hidden" value="true"/>
				</bean>
				<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.resultColumn.orgShortName"/>
					<property name="name" value="Short Name"/>
					<property name="desc" value="Short name for the organization, recorded as the default listing"/>
					<property name="dataType" value="STRING"/>
					<property name="hidden" value="false"/>
				</bean>
				<bean parent="result" autowire-candidate="default" dependency-check="default" autowire="default" lazy-init="default">
					<property name="key" value="org.resultColumn.orgOptionalLongName"/>
					<property name="name" value="Long Name"/>
					<property name="desc" value="Long name for the organization, recorded as the default listing."/>
					<property name="dataType" value="STRING"/>
					<property name="hidden" value="false"/>
				</bean>
			</list>
		</property>
	</bean>
	<bean id="kuali.lookup.lrcgradetypes" parent="lookup">
		<property name="id" value="kuali.lookup.lrcgradetypes" />
		<property name="searchTypeId" value="lrc.search.resultComponent" />
		<property name="name" value="All Grade Types" />
		<property name="desc" value="Returns the list of all Grade Types" />
		<property name="widget" value="CHECKBOX_LIST"/>
		<property name="searchParamIdKey" value="lrc.queryParam.resultComponent.id" />
		<property name="resultReturnKey" value="lrc.resultColumn.resultComponent.id" />
		<property name="resultDisplayKey" value="lrc.resultColumn.resultComponent.name" />
		<property name="resultSortKey" value="lrc.resultColumn.resultComponent.name" />
		<property name="params">
			<list>
				<bean parent="param">
					<property name="key" value="lrc.queryParam.resultComponent.id" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="name" value="Result Component ID" />
					<property name="desc" value="The ID of the Grade Result Component" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="lrc.queryParam.resultComponent.type" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="defaultValueString" value="kuali.resultComponentType.grade.finalGrade" />
					<property name="name" value="Result Component Type" />
					<property name="desc" value="Filter for Final Grade Component Types" />
					<property name="caseSensitive" value="false" />
				</bean>
			</list>
		</property>
		<property name="results">
			<list>
				<bean parent="result">
					<property name="key" value="lrc.resultColumn.resultComponent.id" />
					<property name="name" value="Grade Type Key" />
					<property name="desc" value="Grade Type Key" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
				<bean parent="result">
					<property name="key" value="lrc.resultColumn.resultComponent.name" />
					<property name="name" value="Grade Type Name" />
					<property name="desc" value="Grade Type Name" />
					<property name="dataType" value="STRING" />
					<property name="hidden" value="false" />
				</bean>
			</list>
		</property>
	</bean>

	<bean id="kuali.lu.lookup.feetypes" parent="lookup">
		<property name="searchTypeId" value="enumeration.management.search" />
		<property name="name" value="Get enumerations" />
		<property name="desc" value="Get enumerated lists of values given context" />
		<property name="id" value="kuali.lu.lookup.feetypes" />
		<property name="searchParamIdKey" value="enumeration.queryParam.enumerationCode" />
		<property name="widget" value="DROP_DOWN" />
		<property name="params">
			<list>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.enumerationType" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="defaultValueString" value="kuali.lu.fee.feeType" />
					<property name="name" value="Enumeration Type" />
					<property name="desc" value="The type of the enumeration to search" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.contextType" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="name" value="Context Type" />
					<property name="desc" value="The type of context being used" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.contextValue" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="name" value="Context Value" />
					<property name="desc" value="The value of the supplied context" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.contextDate" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="DATE" />
					<property name="optional" value="true" />
					<property name="name" value="Context Date" />
					<property name="desc" value="A date supplied as context" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.enumerationCode" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="name" value="Context Value" />
					<property name="desc" value="The enumeration code to lookup" />
					<property name="caseSensitive" value="true" />
				</bean>
			</list>
		</property>
		<property name="results">
			<list>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc"
						value="The internal code of the enumeration value" />
					<property name="hidden" value="true" />
					<property name="key" value="enumeration.resultColumn.code" />
					<property name="name" value="Code" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc" value="The description of the enumeration value" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.value" />
					<property name="name" value="Description of the code" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc" value="An abbreviation of the enumeration value" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.abbrevValue" />
					<property name="name" value="Abbreviation of the code" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="TRUNCATED_DATE" />
					<property name="desc" value="The date the enumeration became effective" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.effectiveDate" />
					<property name="name" value="Effective date" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="TRUNCATED_DATE" />
					<property name="desc"
						value="The date the enumeration became non-effective" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.expirationDate" />
					<property name="name" value="Expiration date" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc" value="The description of the type" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.sortKey" />
					<property name="name" value="Key used to sort the results" />
				</bean>
			</list>
		</property>
		<property name="resultReturnKey" value="enumeration.resultColumn.code" />
		<property name="resultDisplayKey" value="enumeration.resultColumn.value" />
		<property name="resultSortKey" value="enumeration.resultColumn.sortKey" />
		<property name="usage" value="DEFAULT" />
	</bean>
	
	<bean id="kuali.lu.lookup.ratetypes" parent="lookup">
		<property name="searchTypeId" value="enumeration.management.search" />
		<property name="name" value="Get enumerations" />
		<property name="desc" value="Get enumerated lists of values given context" />
		<property name="id" value="kuali.lu.lookup.ratetypes" />
		<property name="searchParamIdKey" value="enumeration.queryParam.enumerationCode" />
		<property name="widget" value="DROP_DOWN" />
		<property name="params">
			<list>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.enumerationType" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="defaultValueString" value="kuali.lu.fee.rateType" />
					<property name="name" value="Enumeration Type" />
					<property name="desc" value="The type of the enumeration to search" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.contextType" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="name" value="Context Type" />
					<property name="desc" value="The type of context being used" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.contextValue" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="name" value="Context Value" />
					<property name="desc" value="The value of the supplied context" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.contextDate" />
					<property name="writeAccess" value="NEVER" />
					<property name="dataType" value="DATE" />
					<property name="optional" value="true" />
					<property name="name" value="Context Date" />
					<property name="desc" value="A date supplied as context" />
					<property name="caseSensitive" value="true" />
				</bean>
				<bean parent="param">
					<property name="key" value="enumeration.queryParam.enumerationCode" />
					<property name="dataType" value="STRING" />
					<property name="optional" value="true" />
					<property name="name" value="Context Value" />
					<property name="desc" value="The enumeration code to lookup" />
					<property name="caseSensitive" value="true" />
				</bean>
			</list>
		</property>
		<property name="results">
			<list>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc"
						value="The internal code of the enumeration value" />
					<property name="hidden" value="true" />
					<property name="key" value="enumeration.resultColumn.code" />
					<property name="name" value="Code" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc" value="The description of the enumeration value" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.value" />
					<property name="name" value="Description of the code" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc" value="An abbreviation of the enumeration value" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.abbrevValue" />
					<property name="name" value="Abbreviation of the code" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="TRUNCATED_DATE" />
					<property name="desc" value="The date the enumeration became effective" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.effectiveDate" />
					<property name="name" value="Effective date" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="TRUNCATED_DATE" />
					<property name="desc"
						value="The date the enumeration became non-effective" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.expirationDate" />
					<property name="name" value="Expiration date" />
				</bean>
				<bean parent="result">
					<property name="dataType" value="STRING" />
					<property name="desc" value="The description of the type" />
					<property name="hidden" value="false" />
					<property name="key" value="enumeration.resultColumn.sortKey" />
					<property name="name" value="Key used to sort the results" />
				</bean>
			</list>
		</property>
		<property name="resultReturnKey" value="enumeration.resultColumn.code" />
		<property name="resultDisplayKey" value="enumeration.resultColumn.value" />
		<property name="resultSortKey" value="enumeration.resultColumn.sortKey" />
		<property name="usage" value="DEFAULT" />
	</bean>

    <bean id="kuali.lookup.lrcoutcometypes" parent="lookup">
        <property name="id" value="kuali.lookup.lrcoutcometypes" />
        <property name="searchTypeId" value="lrc.search.resultComponent" />
        <property name="name" value="All Outcome Types" />
        <property name="desc" value="Returns the list of all Outcome Types" />
        <property name="widget" value="DROP_DOWN"/>
        <property name="searchParamIdKey" value="lrc.queryParam.resultComponent.id" />
        <property name="resultReturnKey" value="lrc.resultColumn.resultComponent.id" />
        <property name="resultDisplayKey" value="lrc.resultColumn.resultComponent.name" />
        <property name="resultSortKey" value="lrc.resultColumn.resultComponent.type" />
        <property name="params">
            <list>
                <bean parent="param">
                    <property name="key" value="lrc.queryParam.resultComponent.id" />
                    <property name="writeAccess" value="NEVER" />
                    <property name="dataType" value="STRING" />
                    <property name="optional" value="true" />
                    <property name="name" value="Result Component ID" />
                    <property name="desc" value="The ID of the Outcome Result Component" />
                    <property name="caseSensitive" value="true" />
                </bean>
                <bean parent="param">
                    <property name="key" value="lrc.queryParam.resultComponent.type" />
                    <property name="writeAccess" value="NEVER" />
                    <property name="dataType" value="STRING" />
                    <property name="optional" value="true" />
					<property name="defaultValueList">
						<list>
							<value>kuali.resultComponentType.credit.degree.fixed</value>
							<value>kuali.resultComponentType.credit.degree.range</value>
						</list>
					</property>                   
                    <property name="name" value="Result Component Type" />
                    <property name="desc" value="Filter for Outcome Component Types" />
                    <property name="caseSensitive" value="false" />
                </bean>
            </list>
        </property>
        <property name="results">
            <list>
                <bean parent="result">
                    <property name="key" value="lrc.resultColumn.resultComponent.id" />
                    <property name="name" value="Outcome Type Key" />
                    <property name="desc" value="Outcome Type Key" />
                    <property name="dataType" value="STRING" />
                    <property name="hidden" value="false" />
                </bean>
                <bean parent="result">
                    <property name="key" value="lrc.resultColumn.resultComponent.name" />
                    <property name="name" value="Outcome Type Name" />
                    <property name="desc" value="Outcome Type Name" />
                    <property name="dataType" value="STRING" />
                    <property name="hidden" value="false" />
                </bean>
                <bean parent="result">
                    <property name="key" value="lrc.resultColumn.resultComponent.type" />
                    <property name="name" value="Outcome Type" />
                    <property name="desc" value="Outcome Type" />
                    <property name="dataType" value="STRING" />
                    <property name="hidden" value="false" />
                </bean>                
            </list>
        </property>
    </bean>
      <!-- define childlookups -->

 <bean id="kuali.lu.browse.schoolsAndColleges" parent="lookup">
  <property name="id" value="kuali.lu.browse.schoolsAndColleges" />
  <property name="searchTypeId" value="org.search.generic" />
  <property name="name" value="Organization search" />
  <property name="desc"
            value="Search for administrative department organization" />
  <property name="widget" value="SUGGEST_BOX" />
  <property name="searchParamIdKey" value="org.queryParam.orgOptionalId" />
  <property name="params">
   <list>
    <bean parent="param">
     <property name="key" value="org.queryParam.orgOptionalLongName" />
     <property name="name" value="Organization Name" />
     <property name="desc" value="Long organization name." />
     <property name="writeAccess" value="NEVER" />
     <property name="usage" value="DEFAULT" />
    </bean>
    <bean parent="param">   <!-- limit search to department organizations for this UI context -->
     <property name="key" value="org.queryParam.orgOptionalType" />
     <property name="name" value="Org Type" />
     <property name="desc" value="Type of an organization." />
     <property name="writeAccess" value="NEVER" />
     <property name="defaultValueList">
      <list>
       <value>kuali.org.College</value>
       <value>kuali.org.School</value>
      </list>
     </property>
     <property name="caseSensitive" value="true" />
    </bean>
   </list>
  </property>
  <property name="resultReturnKey" value="org.resultColumn.orgId" />
  <property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName" />
  <property name="resultSortKey" value="org.resultColumn.orgOptionalLongName" />
  <property name="results">
   <list>
    <bean parent="result">
     <property name="key" value="org.resultColumn.orgId" />
     <property name="name" value="Organization Identifier" />
     <property name="desc" value="Identifier for the organization" />
     <property name="dataType" value="STRING" />
     <property name="hidden" value="true" />
    </bean>

    <bean parent="result">
     <property name="key" value="org.resultColumn.orgShortName" />
     <property name="name" value="School or College Abbreviation" />
     <property name="desc" value="Abbreviation or code used to refer to the organization" />
     <property name="dataType" value="STRING" />
     <property name="hidden" value="false" />
    </bean>

    <bean parent="result">
     <property name="key" value="org.resultColumn.orgOptionalLongName" />
     <property name="name" value="Name" />
     <property name="desc"
               value="Long name for the organization, recorded as the default listing." />
     <property name="dataType" value="STRING" />
     <property name="hidden" value="false" />
    </bean>

    <bean parent="result">
     <property name="key" value="org.resultColumn.orgType" />
     <property name="name" value="Type" />
     <property name="desc" value="Type of the organization" />
     <property name="dataType" value="STRING" />
     <property name="hidden" value="true" />
    </bean>
   </list>
  </property>
 </bean>




 <bean id="kuali.lu.browse.departments.in.school" parent="lookup">
  <property name="id" value="kuali.lu.browse.departments.in.school" />
  <property name="searchTypeId" value="org.search.orgQuickViewByRelationTypeRelatedOrgTypeOrgId" />
  <property name="name" value="Search using a heirarchy" />
  <property name="desc"
            value="Finds children of an org" />
  <property name="searchParamIdKey" value="org.queryParam.orgId" />
  <property name="widget" value="NO_WIDGET" />
  <property name="params">
   <list>
    <bean parent="param">
     <property name="key" value="org.queryParam.relationType" />
     <property name="name" value="Relation type" />
     <property name="desc" value="relation type to follow" />
     <property name="writeAccess" value="ALWAYS" />
     <property name="dataType" value="STRING" />
     <property name="defaultValueString" value="kuali.org.Contain" />
     <property name="optional" value="false" />
     <property name="caseSensitive" value="true" />
    </bean>
    <bean parent="param">
     <property name="key" value="org.queryParam.orgId" />
     <property name="name" value="parent id" />
     <property name="desc" value="parent org id" />
     <property name="writeAccess" value="NEVER" />
     <property name="dataType" value="STRING" />
     <property name="childLookup" ref="kuali.lu.browse.schoolsAndColleges" />
     <property name="optional" value="false" />
     <property name="caseSensitive" value="true" />
    </bean>
    <bean parent="param">
     <property name="key"
               value="org.queryParam.relatedOrgType" />
     <property name="name" value="related Org Type" />
     <property name="desc" value="Type of an organization." />
     <property name="writeAccess" value="NEVER" />
     <property name="dataType" value="STRING" />
     <property name="optional" value="false" />
     <property name="defaultValueString" value="kuali.org.Department" />
     <property name="caseSensitive" value="true" />
    </bean>
   </list>
  </property>
  <property name="resultReturnKey" value="org.resultColumn.orgId" />
  <property name="resultDisplayKey" value="org.resultColumn.orgOptionalLongName" />
  <property name="resultSortKey" value="org.resultColumn.orgOptionalLongName" />
  <property name="results">
   <list>
    <bean parent="result">
     <property name="dataType" value="STRING" />
     <property name="desc"
               value="Identifier for the organization" />
     <property name="hidden" value="true" />
     <property name="key" value="org.resultColumn.orgId" />
     <property name="name" value="Organization Identifier" />
    </bean>
    <bean parent="result">
     <property name="dataType" value="STRING" />
     <property name="desc"
               value="Short name for the organization, recorded as the default listing" />
     <property name="hidden" value="false" />
     <property name="key" value="org.resultColumn.orgShortName" />
     <property name="name" value="Dept. Abbreviation" />
    </bean>
   </list>
  </property>
 </bean>


 <bean id="kuali.lu.browse.AllSubjectAreas" parent="lookup">
  <property name="id" value="kuali.lu.browse.AllSubjectAreas" />
  <property name="searchTypeId" value="enumeration.management.search" />
  <property name="name" value="Get enumerations" />
  <property name="desc"
            value="Get enumerated lists of values given context" />
  <property name="searchParamIdKey" value="enumeration.queryParam.enumerationCode" />
  <property name="widget" value="SUGGEST_BOX" />
  <property name="params">
   <list>
    <bean parent="param">
     <property name="key" value="enumeration.queryParam.enumerationType" />
     <property name="name" value="Enumeration Type" />
     <property name="desc" value="The type of the enumeration to search" />
     <property name="writeAccess" value="NEVER" />
     <property name="dataType" value="STRING" />
     <property name="optional" value="true" />
     <property name="defaultValueString" value="kuali.lu.subjectArea" />
     <property name="caseSensitive" value="true" />
    </bean>
    <bean parent="param">
     <property name="key"
               value="enumeration.queryParam.enumerationOptionalCode" />
     <property name="name" value="Context Value" />
     <property name="desc" value="The enumeration code to lookup" />
     <property name="writeAccess" value="ALWAYS" />
     <property name="dataType" value="STRING" />
     <property name="optional" value="true" />
     <property name="usage" value="DEFAULT" />
     <property name="caseSensitive" value="true" />
    </bean>
   </list>
  </property>
  <property name="resultReturnKey" value="enumeration.resultColumn.code" />
  <property name="resultDisplayKey" value="enumeration.resultColumn.abbrevValue" />
  <property name="resultSortKey" value="enumeration.resultColumn.sortKey" />
  <property name="results">
   <list>
    <bean parent="result">
     <property name="dataType" value="STRING" />
     <property name="desc"
               value="The internal code of the enumeration value" />
     <property name="hidden" value="true" />
     <property name="key" value="enumeration.resultColumn.code" />
     <property name="name" value="Code" />
    </bean>
    <bean parent="result">
     <property name="dataType" value="STRING" />
     <property name="desc"
               value="An abbreviation of the enumeration value" />
     <property name="hidden" value="false" />
     <property name="key" value="enumeration.resultColumn.abbrevValue" />
     <property name="name" value="Abbreviation of the code" />
    </bean>
    <bean parent="result">
     <property name="dataType" value="STRING" />
     <property name="desc"
               value="The description of the enumeration value" />
     <property name="hidden" value="false" />
     <property name="key" value="enumeration.resultColumn.value" />
     <property name="name" value="Description of the code" />
    </bean>
    <bean parent="result">
     <property name="dataType" value="TRUNCATED_DATE" />
     <property name="desc"
               value="The date the enumeration became effective" />
     <property name="hidden" value="true" />
     <property name="key" value="enumeration.resultColumn.effectiveDate" />
     <property name="name" value="Effective date" />
    </bean>
    <bean parent="result">
     <property name="dataType" value="TRUNCATED_DATE" />
     <property name="desc"
               value="The date the enumeration became non-effective" />
     <property name="hidden" value="true" />
     <property name="key" value="enumeration.resultColumn.expirationDate" />
     <property name="name" value="Expiration date" />
    </bean>
    <bean parent="result">
     <property name="dataType" value="STRING" />
     <property name="desc" value="The description of the type" />
     <property name="hidden" value="true" />
     <property name="key" value="enumeration.resultColumn.sortKey" />
     <property name="name" value="Key used to sort the results" />
    </bean>
   </list>
  </property>
 </bean>


 <bean id="BrowseCourseCatalog-parent" abstract="true"
       parent="dataObjectStructure">
  <property name="name" value="BrowseCourseCatalog" />
  <property name="fields">
   <list>
    <ref bean="BrowseCourseCatalog.bySubjectArea" />
    <ref bean="BrowseCourseCatalog.bySchoolOrCollege" />
   </list>
  </property>
 </bean>
 <bean id="BrowseCourseCatalog" parent="BrowseCourseCatalog-parent" />
 <bean id="BrowseCourseCatalog.bySubjectArea" parent="dataFieldDescriptor">
  <property name="name" value="bySubjectArea" />
  <property name="writeAccess" value="ALWAYS" />
  <property name="onChangeRefreshMetadata" value="false" />
  <property name="dataObjectStructure" ref="bySubjectArea" />
  <property name="dataType" value="DATA" />
  <property name="constraints">
   <list>
    <ref bean="constraint.single" />
   </list>
  </property>
 </bean>
 <bean id="BrowseCourseCatalog.bySchoolOrCollege" parent="dataFieldDescriptor">
  <property name="name" value="bySchoolOrCollege" />
  <property name="writeAccess" value="ALWAYS" />
  <property name="onChangeRefreshMetadata" value="false" />
  <property name="dataObjectStructure" ref="bySchoolOrCollege" />
  <property name="dataType" value="DATA" />
  <property name="constraints">
   <list>
    <ref bean="constraint.single" />
   </list>
  </property>
 </bean>
 <bean id="bySchoolOrCollege-parent" abstract="true" parent="dataObjectStructure">
  <property name="name" value="bySchoolOrCollege" />
  <property name="fields">
   <list>
    <ref bean="bySchoolOrCollege.courseId" />
   </list>
  </property>
 </bean>
 <bean id="bySchoolOrCollege" parent="bySchoolOrCollege-parent" />
 <bean id="bySchoolOrCollege.courseId" parent="dataFieldDescriptor">
  <property name="name" value="courseId" />
  <property name="writeAccess" value="ALWAYS" />
  <property name="onChangeRefreshMetadata" value="false" />
  <property name="dataType" value="STRING" />
  <property name="initialLookup">
   <bean parent="lookup">
    <property name="id"
              value="kuali.lu.browse.CourseCatalogBySchoolOrCollege" />
    <property name="searchTypeId" value="lu.search.generic" />
    <property name="name" value="Basic and Advanced Search" />
    <property name="desc"
              value="Query with multiple optional elements to satisfy most advanced pickers" />
    <property name="params">
     <list>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalId" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Id" />
       <property name="desc" value="Unique identifier for a lu." />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="CUSTOM" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalLongName" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Name" />
       <property name="desc" value="Long name" />
       <property name="caseSensitive" value="false" />
       <property name="usage" value="DEFAULT" />
       <property name="widget" value="SUGGEST_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalType" />
       <property name="writeAccess" value="NEVER" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
       <property name="name" value="Type" />
       <property name="desc" value="Lu type (course, program etc.)" />
       <property name="caseSensitive" value="true" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalCode" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Code" />
       <property name="desc" value="Lu code" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalDivision" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Division" />
       <property name="desc" value="Division or Subject Area" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalPrimaryAdminOrgId" />
       <property name="childLookup" ref="kuali.lu.browse.departments.in.school" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Primary Admin Org Id" />
       <property name="desc" value="Primary Admin Org Id" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalLevel" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Level" />
       <property name="desc" value="Lu level grad/undergrad" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalState" />
       <property name="writeAccess" value="NEVER" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="defaultValueString" value="Active" />
       <property name="name" value="State" />
       <property name="desc" value="Lu State" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
     </list>
    </property>
    <property name="results">
     <list>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc" value="Identifier of a Clu" />
       <property name="hidden" value="true" />
       <property name="key" value="lu.resultColumn.cluId" />
       <property name="name" value="Clu Id" />
      </bean>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc"
                 value="Long name for the lu, recorded as the default listing." />
       <property name="hidden" value="false" />
       <property name="key" value="lu.resultColumn.luOptionalLongName" />
       <property name="name" value="Name" />
      </bean>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc" value="Lu code" />
       <property name="hidden" value="false" />
       <property name="key" value="lu.resultColumn.luOptionalCode" />
       <property name="name" value="Code" />
      </bean>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc" value="Level of Lu" />
       <property name="hidden" value="false" />
       <property name="key" value="lu.resultColumn.luOptionalLevel" />
       <property name="name" value="Level" />
      </bean>
     </list>
    </property>
    <property name="resultReturnKey" value="lu.resultColumn.cluId" />
    <property name="resultDisplayKey" value="lu.resultColumn.luOptionalLongName" />
    <property name="resultSortKey" value="lu.resultColumn.luOptionalLongName" />
    <property name="usage" value="DEFAULT" />
   </bean>
  </property>
  <property name="additionalLookups">
   <list />
  </property>
 </bean>
 <bean id="bySubjectArea-parent" abstract="true" parent="dataObjectStructure">
  <property name="name" value="bySubjectArea" />
  <property name="fields">
   <list>
    <ref bean="bySubjectArea.courseId" />
   </list>
  </property>
 </bean>
 <bean id="bySubjectArea" parent="bySubjectArea-parent" />
 <bean id="bySubjectArea.courseId" parent="dataFieldDescriptor">
  <property name="name" value="courseId" />
  <property name="writeAccess" value="ALWAYS" />
  <property name="onChangeRefreshMetadata" value="false" />
  <property name="dataType" value="STRING" />
  <property name="initialLookup">
   <bean parent="lookup">
    <property name="id" value="kuali.lu.browse.CourseCatalogBySubjectArea" />
    <property name="searchTypeId" value="lu.search.generic" />
    <property name="name" value="Basic and Advanced Search" />
    <property name="desc"
              value="Query with multiple optional elements to satisfy most advanced pickers" />
    <property name="params">
     <list>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalId" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Id" />
       <property name="desc" value="Unique identifier for a lu." />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="CUSTOM" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalLongName" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Name" />
       <property name="desc" value="Long name" />
       <property name="caseSensitive" value="false" />
       <property name="usage" value="DEFAULT" />
       <property name="widget" value="SUGGEST_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalType" />
       <property name="writeAccess" value="NEVER" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="defaultValueString" value="kuali.lu.type.CreditCourse" />
       <property name="name" value="Type" />
       <property name="desc" value="Lu type (course, program etc.)" />
       <property name="caseSensitive" value="true" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalDivision" />
       <property name="childLookup" ref="kuali.lu.browse.AllSubjectAreas" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Division" />
       <property name="desc" value="Division or Subject Area" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key"
                 value="lu.queryParam.luOptionalPrimaryAdminOrgId" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Primary Admin Org Id" />
       <property name="desc" value="Primary Admin Org Id" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalCode" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Code" />
       <property name="desc" value="Lu code" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalDivision" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Division" />
       <property name="desc" value="Division or Subject Area" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key"
                 value="lu.queryParam.luOptionalPrimaryAdminOrgId" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Primary Admin Org Id" />
       <property name="desc" value="Primary Admin Org Id" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalLevel" />
       <property name="writeAccess" value="ALWAYS" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="name" value="Level" />
       <property name="desc" value="Lu level grad/undergrad" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
      <bean parent="param">
       <property name="key" value="lu.queryParam.luOptionalState" />
       <property name="writeAccess" value="NEVER" />
       <property name="dataType" value="STRING" />
       <property name="optional" value="true" />
       <property name="defaultValueString" value="Active" />
       <property name="name" value="State" />
       <property name="desc" value="Lu State" />
       <property name="caseSensitive" value="true" />
       <property name="usage" value="ADVANCED" />
       <property name="widget" value="TEXT_BOX" />
      </bean>
     </list>
    </property>
    <property name="results">
     <list>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc" value="Identifier of a Clu" />
       <property name="hidden" value="true" />
       <property name="key" value="lu.resultColumn.cluId" />
       <property name="name" value="Clu Id" />
      </bean>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc"
                 value="Long name for the lu, recorded as the default listing." />
       <property name="hidden" value="false" />
       <property name="key" value="lu.resultColumn.luOptionalLongName" />
       <property name="name" value="Name" />
      </bean>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc" value="Lu code" />
       <property name="hidden" value="false" />
       <property name="key" value="lu.resultColumn.luOptionalCode" />
       <property name="name" value="Code" />
      </bean>
      <bean parent="result">
       <property name="dataType" value="STRING" />
       <property name="desc" value="Level of Lu" />
       <property name="hidden" value="false" />
       <property name="key" value="lu.resultColumn.luOptionalLevel" />
       <property name="name" value="Level" />
      </bean>
     </list>
    </property>
    <property name="resultReturnKey" value="lu.resultColumn.cluId" />
    <property name="resultDisplayKey" value="lu.resultColumn.luOptionalLongName" />
    <property name="resultSortKey" value="lu.resultColumn.luOptionalLongName" />
    <property name="usage" value="DEFAULT" />
   </bean>
  </property>
  <property name="additionalLookups">
   <list />
  </property>
 </bean>

</beans>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy