Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Table of Contents:

Table of Contents

2.2.X to 2.3-M1

  • Suggest widget had changes to its properties for clarity and enhancement: 
    • sourcePropertyName is now valuePropertyName
    • sourceQueryMethodResults is now returnFullQueryObject
    • labelPropertyName was added
    • additionalPropertiesToReturn was added
  • The div structure around headers was changed to accommodate unifiedHeader and stickyHeader functionality.  This also fixes a layout bug with right/upper/bottomGroup of headers.
  • headerText on pages will no longer appear in the same location because unifiedHeader option of View is used by default (UX recommendation).  To restore this look turn this flag off.
  • Views now use the header class ViewHeader in its bean definition (expands features for header specific to view headers)
  • A group that appears above the Breadcrumbs of a View was added to the layout (called topGroup).
  • When using stickyHeader/stickyFooter functionality some styles will not be used (and may break this functionality) if they have been customized: specifically margins and position/display related styles for these areas due to the nature of this feature.
  • Breadcrumbs have been completely overhauled:
    • various properties of the Breadcrumbs widget have been removed. 
    • BreadcrumbOptions have been added to allow full control over how breadcrumbs appear
    • If no customizations to the past breadcrumbs were made, this transition should be seamless
    • breadcrumb.ftl was added to represent a single breadcrumb
    • homewardPath should now be controlled through either parentLocation options or preViewBreadcrumb options
    • breadcrumbs are now tied directly to a Page (as opposed to a View).  Relevant options will always be pulled from the page's breadcrumbOptions (non-render specific properties can be inherited from the View setting).
    • Breadcrumbs in inquiry and lookup lightboxes (as a path) have been temporarily disabled until M2
  • Various changes to how the validation framework appears and behaves have been made at UX request, see for a full list of changes made
  • When adding css classes to a component the additionalCssClasses convenience property should be used instead of merging the cssClasses list
  • Class moves due to KRAD split work:
    • GlobalResourceLoaderServiceFactoryBean moved from impl/src/main/java/org/kuali/rice/krad/config to core/framework/src/main/java/org/kuali/rice/core/framework/resourceloader
    • InfrastructureException removed
    • org.kuali.rice.krad.exception in impl moved to krad-app-framework
    • Moved fields in AttributeReferenceElements to AttributeReferenceDummy, then removed AttributeReferenceElements
    • Renamed AttributeReferenceDummy to AttributeReference (and AttributeReferenceDummy.xml to AttributeReference.xml). Beans still can be reference with 'AttributeReferenceDummy')
    • Removed AttributeReferenceDummyTest
    • Moved LookupResults from (impl) to org.kuali.rice.kns.lookup
    • Moved SelectedObjectIds and MultipleValueLookupMetadata from (krad-app-framework) to (impl) org.kuali.rice.kns.lookup
    • Moved ConfigurationServiceImpl from (impl) org.kuali.rice.krad.service.impl to org.kuali.rice.kns.service.impl
    • Create new impl ConfigurationServiceImpl in (core-impl) that just picks up config files
    • Removed DuplicateKeyException and PropertiesException, changed to RiceRuntimeException
    • Moved getKualiConfigurationService from KRADServiceLocator to CoreApiServiceLocator
    • Moved ModuleServiceNotFoundException from (impl) org.kuali.rice.krad.service to (krad-web) org.kuali.rice.krad.exception
    • Moved IfExistsFactoryBean and NamedOrderedListBean from (impl) org.kuali.rice.krad.util.spring to (core-framework) org.kuali.rice.core.framework.util.spring
    • Moved AttributeReference from (impl) to (krad-web) org.kuali.rice.krad.datadictionary
    • Moved (impl) org.kuali.rice.krad.workflow.atribute to (impl) org.kuali.rice.kns.workflow.attribute
    • Moved (impl) WorkflowAttributePropertyREsolutionService(Impl) from org.kuali.rice.krad.workflow.service to org.kuali.rice.kns.workflow.service
      Moved (impl) WorkflowUtils from org.kuali.rice.krad.workflow to org.kuali.rice.kns.workflow

2.3-M1 to 2.3-M2

Impacting Changes

  • The way in which html data attributes (dataAttributes property on component) are handled in KRAD was changed.  We now place what we considered "complex" data attributes directly into the element's html tag rather than using script to enhance performance.  This requires that these data objects follow the JSON spec exactly for the data to be picked up correctly in the script.  Data objects must also escape certain characters (quote, single quote, etc) when they are added as a result.
  • KRAD Actions now use a single handler at the js level to enhance performance.  Their script is written to an attribute called data-onclick which is consumed by the framework when needed.  Inquiry lightbox links use the same pattern.  This should not have any direct impact for most cases, but script added at the Java level must be appropriately escaped now for these elements (these elements handle this themselves).
  • The close button no longer exists for most pages due to user usability and understanding concerns. 
    • As a result, the close method on the UifControllerBase no longer exists on all views (except lightbox views) and is renamed to "back".  Back is a new method that tries to determine the best course of action for going back one view when called and is called from cancel.  Cancel was eliminated from inquiry views entirely and inquiry now only have a "< Back" button for clarity.
    • If in a HistoryFlow (path based breadcrumbs), a returnToStart parameter with "true" can be passed to go back to the "start" of that flow
  • BreadcrumbOptions was split into BreadcrumbOptions (for View) and PageBreadcrumbOptions (for Page), the difference being that the render options are only at the page level (they were only ever consumed at the page level before, this is a change for clarity).

Notes on Other Non-Impacting Changes

KULRICE-8427 - Session Support

In order to take advantage of the new session support functionality, you must add the following filter to your web.xml file. In addition, the filter must be first in the list of filters (before the login filter).

Code Block
titleSession Timeout Filter

2.3-M2 to 2.3-M3

KULRICE-8926Convert default login screen to KRAD
  • As part of the conversion to a KRAD login screen three filters were moved from org.kuali.rice.kew.web to org.kuali.rice.krad.web.filter
  • !! Configuration files which may reference these filter with filter.filtername.class= property definitions, will need to be updated to the new package names.

  • A new servlet login-servlet.xml was created and added to the WEB-INF of 
    • krad-web
    • krad-sampleapp
    • rice-web

KULRICE-8431 - perform expression evaluation once per view lifecycle

  • Renamed to ExpressionEvaluator and DefaultExpressionEvaluator
  • Moved to org.kuali.rice.krad.uif.view
  • Changed method signatures to not take view
  • Added method initializeEvaluationContext(Object contextObject)
  • Added public getExpressionEvaluator() to ViewHelperServiceImpl for getting initialized instance during lifecycle


KULRICE-5391 - Add messages to lookup results

  • Added new messages for primary key and results found to
  • Added LookupResultCollectionSection now includes LookupResultMessages in
KULRICE-5287 - Lookup - Need export on results table

  • Replaces use of flash export functionality built in datatables.tableTools with server side method calls
  • Added new retrieveTableData method to UifControllerBase
  • Added two new parameters, showSearchOption and showExportOption, to the RichTable
  • Defaults showExportOption to true
KULRICE-9469 - Exception will be thrown if page in page
  • This structure was not allowed before, but now it is enforced
KULRICE-7998 - Dirty field plugin eliminated and replaced with KRAD implementation
  • Removed for performance reasons
KULRICE-9595 - Avoid running scripts on non-visible content
  • Javascript for components hidden behind disclosure or details will delay their execution til opened with the exception of validation framework scripts
KULRICE-9693 - View header and top group update on page change
  • They will now update on every page change, eliminating the need for custom scripts to update header content
KULRICE-9694 - Implement both local and ajax requested Json data generation for datatables (RichTable)
  • 2 new options on Richtable - forceLocalJsonData and forceAjaxJsonData for use in performance tweaking
KULRICE-9598 - Validation framework improvement to cut data that is determined to be default
  • Data related to validation is now retrieved through the js function getValidationData rather than using jQuery .data call directly
KULRICE-9606 -  Make property for retrieving groups via ajax for lightbox display - add useAjaxCallForContent flag
  • useAjaxCallForContent eliminates the need to manually retrieve content for custom dialogs - it will automatically retrieve group content when the showLightboxComponent call is made against a group with this flag set to true
  • renderAsPlaceholder renamed as useAjaxCallForContent


Changed addLineLabel from Label to Message on CollectionGroup

2.3-M3 to 2.3-RC1

KULRICE-8433 - Removed quickfinder and inquiry initialization from data and input field beans

In order to improve performance by thinning out the view graph, the quickfinder and inquiry widget initialization was removed from Uif-DataField and Uif-InputField.

This means if you were using nested properties to configure these widgets that will now throw a NPE. 

Ex. quickfinder.render="false", quickfinder.dataObjectClassName="edu.iu.TravelAccount"

Instead, you must fully initialize and configure the widget.

Code Block
titleQuickfinder Conversion
 <property name="quickfinder.dataObjectClassName" value=""/>
 <property name="quickfinder.fieldConversions">
       <entry key="number" value="field3"/>
converts to:
<property name="quickfinder">
    <bean parent="Uif-QuickFinder" p:dataObjectClassName=""
Code Block
titleInquiry Conversion
<property name="inquiry.dataObjectClassName"
          value="" />
<property name="inquiry.inquiryParameters">
      <entry key="routeHeaderInitiatorWorkflowId" value="principalId1" />
converts to:
<property name="inquiry">
   <bean parent="Uif-Inquiry" p:dataObjectClassName="" 

Automatic quickfinders and inquiries will still be associated when relationships are found, and the widget is not manually configured. To disable automatic functionality use the flags: enableAutoQuickfinder, enableAutoInquiry, enableAutoDirectInquiry 

Code Block
titleTurning off Automatic Quickfinder
converts to:

The initialization of the quickfinder widget on collection groups has also been removed. This means if you were setting p:collectionLookup.render="false" to remove it you no longer need to do so.

Code Block
titleCollection Lookup Conversion
<property name="collectionLookup.dataObjectClassName" value="org.kuali.rice.krms.impl.repository.CategoryBo"/>
<property name="collectionLookup.fieldConversions" value="id:id,name:name,namespace:namespace"/>
converts to:

<property name="collectionLookup">
   <bean parent="Uif-CollectionQuickFinder"


KULRICE-9612 - Copying of components reimplemented to use copy method on component

For performance reasons the use of CloneUtils for copying components was replaced with copy methods on each component. If you have created any custom components you should override the copyProperties method and copy the properties specific to the subclass.

Code Block
titleCopy Properties Implementation
     * @see org.kuali.rice.krad.uif.component.ComponentBase#copy()
    protected <T> void copyProperties(T component) {

        TextControl textControlCopy = (TextControl) component;


        if(datePicker != null) {


Make sure to call super, and to invoke copy() on all nested components.

KULRICE-8910 - Bootstrap added as default library, Fluid removed
  • The fluid CSS files and infusion JavaScript library have been removed from the default theme. If you wish to continue using these you will need to download and add to your custom theme. 
  • In addition, the Reorderer component was removed from KRAD since it was implemented using the Fluid infusion library.
  • This change includes widespread changes to styling of KRAD as a whole, and elimination of many uif- css classes on components to a single most specific class

    • This may require changes to your custom css to select groups and fields by their data-role attribute instead of by class name
    • Many margins, padding, and font styles were changed which may have a heavy impact on more divergent layouts if they are inheriting these
    • Additional default styles added and removed may have large impact on heavily customized themes
    • Styling of the navigation menu and tabs was completely changed
    • Button styling was completely changed and is now backed by bootstrap styling/naming
KULRICE-9238 - Changes to view theme and new theme builder

Along with bringing in Bootstrap, the view theme was reworked to support Less and to fix previous pain points. This mostly only impacts those who are creating custom themes.

Switching to use non minified files

By default the themes will use the minified versions of the theme CSS and JS files. If you wish to use the full source files for development purposes, set the Rice config properties '' to true in your local config file.

New Theme Beans

The beans Uif-BaseTheme, Uif-KradTheme, and Uif-ClassicKnsTheme have been removed. If you were previously extending one of these for a custom theme, you should now extend Uif-KbootTheme.

Building Kboot

If you are using maven overlays to acquire the KRAD web content (recommended), the Kboot theme will be ready for consumption. If instead you are acquiring the KRAD web content by manually pulling source, you will need to add the theme builder plugin to your maven process. See 'pom.xml' in the KRAD Web module for an example.

Building Custom Themes

Documentation will be coming shortly in the KRAD guide for developing custom themes. In the meantime, look at the JavaDocs for ViewTheme, and ThemeBuilder in the new KRAD theme builder module.

KULRICE-9238 - Improved web asset handling

To support the new theme builder some of the KRAD web resources were moved. This includes all plugins moving from '/krad/plugins' to '/plugins'. Any resources being referenced from these directories will need to be updated.

KULRICE-9883 - coerceValue JS Function will return boolean values
  • This affects SPEL backed expression evaluation on the client, boolean based expressions are now allowable without the need to check them textually (see jira)
KULRICE-8930 - rowCssClasses revamp for TableLayoutManager and LightTable
  • DO NOT use rowCssClasses property to set your row css classes for these tables (it is used internally by the framework - still available for use on GridLayouts), use conditionalRowCssClasses
  • conditionalRowCssClasses allow the use of SPEL (using the line context) allowing you to dynamically style rows based on their content, also allows keywords all, even, odd, and index number

Non-Impacting RC1 Changes to be Aware Of

PropertyPlaceholderConfigurer support added to the data dictionary. This means you can use ${} expressions to reference Rice config properties (useful for configured paths, these will only get evaluated once as opposed to the @{} UIF expressions which get evaluated many times)

CssGridLayout was added a new layout with two types - Fixed and Fluid.  It has a demo in the KRAD library example app.

Performance boosts to validateForm and validateLine calls

Suggest functionality will work in a lightbox/dialog

Problems with sub collections in nested groups refreshing resolved

2.3.0 to 2.3.1

KULRICE-9918 - Provide a way for application modules to specify their own custom document types for notifications generated for them by KEN

The NotificationContract implementing classes now have a new field called "docTypeName" which allows implementers to specify custom document types for different notifications. This field is not required, and if it is left blank, it will default to the document type "KualiNotification". Current notifications already in the system will default to this as well and not be affected.

KULRICE-10102 - Update KIM permissions for edit document in master data source

The script corrects some issues with permissions that were causing maintenance documents to still be editable after submit (see KULRICE-9643)

To apply this change, run the SQL in scripts/upgrades/2.3.0 to 2.3.1/db-updates/2013-08-08.sql (for Oracle) or scripts/upgrades/2.3.0 to 2.3.1/db-updates/mysql-2013-08-08.sql (for MySQL).

KULRICE-10180 - Database changes for KULRICE-10175

This script adds an optional DOC_TYP_NM column to KREN_NTFCN_T.  See KULRICE-9918 for details.

To apply this change, run the SQL in scripts/upgrades/2.3.0 to 2.3.1/db-updates/2013-08-14.sql (for Oracle) or scripts/upgrades/2.3.0 to 2.3.1/db-updates/mysql-2013-08-14.sql (for MySQL).

KULRICE-9034 - KR-KRAD - RESULTS_LIMIT parameter should be added and the code should be changed to use it

The script adds a new system parameter to configure the default lookup results limit in KRAD.  The parameter's namespace is KR-KRAD, the component code is Lookup, and the parameter name is RESULTS_LIMIT.  The default value for this new parameter is 200.

To apply this change, run the SQL in scripts/upgrades/2.3.0 to 2.3.1/db-updates/2013-08-14b.sql (for Oracle) or scripts/upgrades/2.3.0 to 2.3.1/db-updates/mysql-2013-08-14b.sql (for MySQL).

KULRICE-9887 - KRMS Attribute with name 'peopleFlowName' has invalid namespace

The script corrects the namespace for this KRMS attribute definition from "KR_RULE" to "KR-RULE".

To apply this change, run the SQL in scripts/upgrades/2.3.0 to 2.3.1/db-updates/2013-08-23.sql (for Oracle) or scripts/upgrades/2.3.0 to 2.3.1/db-updates/mysql-2013-08-23.sql (for MySQL).

KULRICE-10251 - Maintain KRMS Agenda permission has confusing and unused permission detail

The script removes the permission detail from the permission called "Maintain KRMS Agenda" in the "KR-RULE-TEST" namespace.

To apply this change, run the SQL in scripts/upgrades/2.3.0 to 2.3.1/db-updates/2013-08-23b.sql (for Oracle) or scripts/upgrades/2.3.0 to 2.3.1/db-updates/mysql-2013-08-23b.sql (for MySQL).

KULRICE-9142 - Modify the existing Recall permission to apply to RiceDocument

The script narrows the document type that the "Recall Document" permission applies to from "*" to "RiceDocument".  This allows applications to selectively apply it by adding additional permissions for other document types.

To apply this change, run the SQL in scripts/upgrades/2.3.0 to 2.3.1/db-updates/2013-08-23c.sql (for Oracle) or scripts/upgrades/2.3.0 to 2.3.1/db-updates/mysql-2013-08-23c.sql (for MySQL).

KULRICE-9998 - Country Name is defined as 40 characters in the database, but 50 characters in the data dictionary

The script extends the maximum size of a country name in KRLC_CNTRY_T to 255 characters (the column name is POSTAL_CNTRY_NM). 

To apply this change, run the SQL in scripts/upgrades/2.3.0 to 2.3.1/db-updates/2013-09-05.sql (for Oracle) or scripts/upgrades/2.3.0 to 2.3.1/db-updates/mysql-2013-09-05.sql (for MySQL).