[KULRICE-11333] samples for M44 Created: 03/Dec/13  Updated: 21/Apr/14  Resolved: 17/Dec/13

Status: Closed
Project: Kuali Rice Development
Component/s: Development
Affects Version/s: None
Fix Version/s: 2.4
Security Level: Public (Public: Anyone can view)

Type: Task Priority: Major
Reporter: Claus Niesen Assignee: Erik Meade
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: 0 minutes
Time Spent: 2 days, 6 hours, 35 minutes
Original Estimate: 1 day

Attachments: PNG File ClearSecureBoCopyBlankId.png     PNG File M44KnsExample.png     XML File TravelDestinationMaintenanceDocument.xml     PNG File TravelerDetailMainenanceValidationError.png     PNG File TravlerDetailsInquiryPhoneNumberAdmin.png     PNG File TravlerDetailsInquiryPhoneNumberDev1.png    
Issue Links:
cloned to KULRICE-11359 samples for M71 Closed
discovered KULRICE-11474 KRAD Sampleapp Maintenance Copy Id bl... Open
is related to KULRICE-10341 Freemarker and SQL Exceptions in logs... Open
is related to KULRICE-10317 Finish Implementation on KRAD Mainten... Closed
Epic Link: Maintenance Equivalence
Rice Module:
KRAD Feature Area:
Application Requirement:
Sprint: 2.4.0-m3 KRAD Sprint 4
KAI Review Status: Not Required
KTI Review Status: Not Required
Code Review Status: Not Required
Include in Release Notes?:


M: Automatically clears out secure fields upon a BO copy operation.
1) Build a KRAD sample linked from the KRAD sample app / labs / maintenance page, and
2) identify a KNS example.
Add links to these in the corresponding row the Maintenance Gap Analysis wiki page (https://wiki.kuali.org/display/KULRICE/Gap+Analysis+-+Maintenance+Document) to these examples.

The TravelerDetail has a masked secure fields. For the sample we'll need a maintenance document view and lookup to copy the BO.

In KNS this was implemented in KualiMaintenanceDocumentAction.clearUnauthorizedNewFields

Comment by Erik Meade [ 09/Dec/13 ]


Comment by Erik Meade [ 10/Dec/13 ]

KULRICE-10235 might be considered a blocker, but I'll see about adding the data I need via SQL

Comment by Erik Meade [ 10/Dec/13 ]

Work around Doc Type Maintenance exception

Comment by Erik Meade [ 11/Dec/13 ]

KRAD Demo Lookup Basic copy link is http://localhost:8080/krad-dev/kr-krad/maintenance?viewTypeName=MAINTENANCE&number=a1&maintenanceCopy&dataObjectClassName=org.kuali.rice.krad.demo.travel.dataobject.TravelAccount

Comment by Erik Meade [ 12/Dec/13 ]

Copy URL http://localhost:8080/krad-dev/kr-krad/maintenance?viewTypeName=MAINTENANCE&id=1&methodToCall=maintenanceCopy&dataObjectClassName=edu.sampleu.travel.dataobject.TravelerDetail&backdoorId=dev1

Comment by Erik Meade [ 12/Dec/13 ]

Traveler Details Inquiry URL (not phone number differences between backdoorId dev1 and admin) http://env14.rice.kuali.org/kr-krad/inquiry?methodToCall=start&dataObjectClassName=edu.sampleu.travel.dataobject.TravelerDetail&id=1&backdoorId=dev1

Comment by Erik Meade [ 13/Dec/13 ]

Couple of validation errors that need to be tracked down for Submit, the dateOfBirth validation error is odd as the dateOfBirth input is in this format, maybe it's not getting copied so it's blank. The {0} value '{1}' is not formatted correctly, Looks like an issue between 0-1 and boolean values, not to mention the missing message (needs to be added to property file maybe) in the error itself.

Comment by Erik Meade [ 13/Dec/13 ]

Hacked up the code base to get around Permission and Validation issues. Upon submitting the maintenanceCopy, the UI reports success, however the document is not in the DB and there is an error and JTA Roolback stack trace in the logs:

[EL Warning]: 2013-12-13 14:17:51.285--UnitOfWork(7941180)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '' for key 'PRIMARY'
Error Code: 1062
Call: INSERT INTO TRVL_TRAVELER_DTL_T (ACTV_IND, citizenship, city_nm, country_cd, customer_num, doc_nbr, drive_lic_exp_dt, drive_lic_num, email_addr, first_nm, gender, last_nm, MIDDLENAME, non_res_alien, OBJ_ID, phone_nbr, EMP_PRINCIPAL_ID, postal_state_cd, addr_line_1, addr_line_2, traveler_typ_cd, VER_NBR, postal_cd) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [23 parameters bound]
Query: InsertObjectQuery(edu.sampleu.travel.dataobject.TravelerDetail@27d82f0a)
2013-12-13 14:17:51,285 [TRAVEL/KSB-pool-1-thread-2] u:dev1/d: INFO  org.objectweb.jotm - Rollback during beforeCompletion in SubCoordinator.commit_one_phase
2013-12-13 14:17:51,287 [TRAVEL/KSB-pool-1-thread-2] u:dev1/d: ERROR org.kuali.rice.ksb.messaging.MessageServiceInvoker - Error processing message: [RouteQueue: , routeQueueId=479, ipNumber=, serviceName={http://rice.kuali.org/kew/v2_0}documentProcessingQueue, methodName=processWithOptions, queueStatus=R, queuePriority=5, queueDate=2013-12-13 14:17:51.059]
org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException
	at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1014)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:148)
	at org.kuali.rice.ksb.messaging.MessageServiceInvoker.run(MessageServiceInvoker.java:67)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: javax.transaction.RollbackException
	at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:331)
	at org.objectweb.jotm.Current.commit(Current.java:474)
	at sun.reflect.GeneratedMethodAccessor147.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.kuali.rice.core.framework.persistence.jta.UserTransactionFactoryBean$LazyInitializationHandler.invoke(UserTransactionFactoryBean.java:73)
	at $Proxy13.commit(Unknown Source)
	at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1011)
	... 7 more
2013-12-13 14:17:51,287 [TRAVEL/KSB-pool-1-thread-2] u:dev1/d: ERROR org.kuali.rice.ksb.messaging.exceptionhandling.DefaultExceptionServiceImpl - Exception caught processing message 479 {http://rice.kuali.org/kew/v2_0}documentProcessingQueue: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException

Comment by Erik Meade [ 13/Dec/13 ]

SQL Exception in logs without Incident report. UI message was that document submission was successful. KULRICE-10341

Comment by Erik Meade [ 17/Dec/13 ]

M44 Sample URL (dev1) http://localhost:8080/krad-dev/kr-krad/maintenance?viewTypeName=MAINTENANCE&id=1&methodToCall=maintenanceCopy&dataObjectClassName=edu.sampleu.travel.dataobject.TravelerDetail&backdoorId=dev1

M44 Sample URL (admin) http://localhost:8080/krad-dev/kr-krad/maintenance?viewTypeName=MAINTENANCE&id=1&methodToCall=maintenanceCopy&dataObjectClassName=edu.sampleu.travel.dataobject.TravelerDetail&backdoorId=admin

Comment by Erik Meade [ 17/Dec/13 ]

TravelerDetailMainenanceValidationError.png date validation error was due to the Drivers license exp date, adding the field to the form caused it to be formatted properly. Liability Insurance requires 0 1 or blank, vs true/false.

Comment by Erik Meade [ 17/Dec/13 ]

ClearSecureBoCopyBlankId.png - Notice the blank id, which then causes a duplicate primary key after the first copy. Doc Number is ?? that isn't right is it? Phone Number is null, which is expected behavior as Phone Number is the secured field.

Comment by Erik Meade [ 17/Dec/13 ]

M44KnsExample.png - KFS user ahrens on Main Menu ACHBank search (routing numbers) (Rice KNS example was in travelapp has been removed from sampleapp)


  <bean id="ACHBank-bankRoutingNumber-parentBean" abstract="true" parent="AttributeDefinition">
    <property name="name" value="bankRoutingNumber"/>
    <property name="forceUppercase" value="false"/>
    <property name="label" value="Bank Routing Number"/>
    <property name="shortLabel" value="Bank Routing Number"/>
    <property name="maxLength" value="9"/>
    <property name="validationPattern">
      <ref bean="NumericValidation" />
    <property name="required" value="true"/>
    <property name="control">
      <bean parent="TextControlDefinition" p:size="9"/>
    <property name="attributeSecurity">
                <bean parent="AttributeSecurity">
                        <property name="mask" value="true"/> 
                        <property name="maskFormatter">
                        <bean parent="MaskFormatterLiteral" p:literal="*********"/> 
Comment by Erik Meade [ 17/Dec/13 ]

Example completed, but there are implementation issues with the copy functionality (blank id, ?? doc number)

Generated at Sat Feb 27 09:37:43 CST 2021 using JIRA 7.0.11#70121-sha1:19d24976997c1d95f06f3e327e087be0b71f28d4.