Case Reset (Undispatch) - department-of-veterans-affairs/caseflow GitHub Wiki
Taxonomy: Original Appeal type
steps to undispatch appeal/case reset https://verbose-broccoli-9868be41.pages.github.io/batteam-quickref/dispatch/reopen_completed_dispatch_task.html
sudo su -
source /opt/caseflow-certification/caseflow-certification_env.sh; cd /opt/caseflow-certification/src; bin/rails c
RequestStore[:current_user] = User.system_user
appeal = Appeal.find_by(uuid: "")
type can't be vacate or de novo
appeal.type
check for remanded or granted decision issues
appeal.decision_issues.pluck(:disposition)
If the disposition is not: "remanded", "granted", or "allowed" move to Ready to Start section
if remanded: Grab remanded claims attached to appeal. This assumes there is only one, if there's more than one repeat these steps with each claim
appeal.active_remanded_claims.count
sc = appeal.active_remanded_claims.first
Grab epes attached to Claim This assumes there is only one, if there's more than one repeat these steps with each EPE
sc.end_product_establishments.count
epe = sc.end_product_establishments.first
epe.send(:cancel!)
if granted or allowed: Grab epes attached to appeal
epes = appeal.decision_document.end_product_establishments
epes.count
note: If there is more than one EPE, go through and cancel each one. cancel epe
epe = epes.first
epe.send(:cancel!)
Grab the board grant Effectuation and delete
bges = appeal.decision_document.effectuations
bges.count
If the count is more than one, find the appropriate Effectuation(s) to be deleted
bge = bges[0]
bge.delete
########## Ready to start #############
Clear poa_participant_id
on Appeal
should return nil
appeal.update(poa_participant_id: nil); appeal.reload.poa_participant_id
Reopen the decided
request issues
aka clear the closed_at
, closed_status
fields
ris = appeal.request_issues; ris.pluck(:id, :closed_at, :closed_status )
Only update ones that have the closed_status set to "decided" they're all decided so
appeal.request_issues.each do |issue|; issue.update!(closed_at: nil, closed_status: nil); end
appeal.reload.request_issues.pluck(:id, :closed_at, :closed_status )
Unset caseflow_decision_date
on the decision issues
check that they all have a decision date
appeal.decision_issues.pluck(:id, :benefit_type, :caseflow_decision_date)
Update decisions
appeal.decision_issues.each do |issue|; issue.update!(caseflow_decision_date: nil); end
appeal.reload.decision_issues.pluck(:id, :benefit_type, :caseflow_decision_date)
Pretty print and copy the output of the decision document to send to Jen and Marie
pp appeal.decision_document
STOP - SEND DECISION DOC IN ENCRIPTED EMAIL TO JENN AND MARIE THROUGH VA EMAIL
Delete and reload decision document. it should return nil
appeal.decision_document.delete
appeal.reload.decision_document
Print out the task tree to copy into a text file
appeal.reload.treee
NOTE: It's easier and reduces user error to copy the task tree into a txt file, set the appropriate variables and then copy and paste the variables Below the tree set the appropriate attributes in the text file user will be user attached to the dispatch_user_task_id
#tree here
root_task_id = ""; dispatch_org_task_id = ""; dispatch_user_task_id = ""
user = User.find_by_css_id("")
Update tasks
#all of the below in one line
Task.find(root_task_id).update!(status: Constants.TASK_STATUSES.on_hold, closed_at: nil); Task.find(dispatch_org_task_id).update!(status: Constants.TASK_STATUSES.on_hold, closed_at: nil); Task.find(dispatch_user_task_id).update!(status: Constants.TASK_STATUSES.assigned, closed_at: nil, assigned_to: user)
Reload and display appeal task tree The root task and bva org task should be on_hold and the bva user task should be assigned to user
appeal.reload.treee
Taxonomy: Vacate Appeal type
IF you have a Vacate appeal type, the following SOP may be utilized.
Sudo into Caseflow/rails
sudo su -c "source /opt/caseflow-certification/caseflow-certification_env.sh; cd /opt/caseflow-certification/src; bin/rails c"
Set the user
RequestStore[:current_user] = User.system_user
Grab the uuid of your appeal, for the vacate stream specifically if you can. If you are not sure, the following steps within this SOP will ensure that you are on the right appeal stream (Vacate)
appeal = Appeal.find_by(uuid: " ** UUID **")
user we want the User BVADispatchTask assigned to
user_css_id = ""
Instructions to be added to the user bva dispatch task Something along the lines of: "Case returned to Caseflow by request of USER. Please NEXT STEPS.""
instructions = "Case returned to Caseflow by request of ** USER **. Please verify that you are able to correct VBMS and work this case."
Confirm that appeal type is vacate
appeal.type
(IF the previous output is "ORIGINAL" complete the following steps to get to the vacate stream, otherwise, skip ahead to pdm step) Grab all appeal streams
streams=Appeal.where(stream_docket_number: appeal.stream_docket_number)
Check each of the streams on this appeal
streams.map(&:stream_type)
Target specifically the vacate stream (The below query works ONLY if the second stream is the vacate stream, IF NOT, you must edit this query accordingly)
v=streams.second
Check the TYPE of the post decision motion on your vacate appeal, this SOP is for "straight_vacate" ONLY at this time
pp pdm = PostDecisionMotion.where(appeal: appeal)
Pull up the Appeal tree
appeal.reload.treee(:id, :status, :ASGN_BY, :ASGN_TO, :created_at, :closed_at)
Pull the POA on the appeal
appeal.poa_participant_id -> " ** POA ID ** "
(!) Clear the poa_participant_id on the appeal
appeal.update(poa_participant_id: nil)
appeal.reload.poa_participant_id
We now have to reopen the decided
request issues
aka clear the closed_at
, closed_status
fields
appeal.request_issues.count
pp appeal.request_issues.pluck(:id, :closed_at, :closed_status)
appeal.request_issues.each do |issue|; issue.update!(closed_at: nil, closed_status: nil); end
appeal.reload.request_issues.pluck(:id, :closed_at, :closed_status )
Print out the number of decision issues
appeal.decision_issues.count
Print the results of these decision issues, they should all have a disposition of "vacated" if ANY decision issues are "remanded" or "granted", there is an issue, and DO NOT use this SOP on your ticket, as it is only for undispatching/case reset for Vacate appeal streams!
pp appeal.decision_issues.pluck(:id, :benefit_type, :caseflow_decision_date, :disposition)
Let's double check to make sure there aren't any new non-vacated decisions
appeal.decision_issues.map(&:disposition).uniq
If there's only "vacated" in your result, we're good to go
Unset caseflow_decision_date
on the decision issues
appeal.decision_issues.each do |issue|
issue.update(caseflow_decision_date: nil)
end;
appeal.reload.decision_issues.pluck(:id, :benefit_type, :caseflow_decision_date)
Pretty print and copy the output of the decision document to send to Jen and Marie
pp appeal.decision_document
STOP - SEND DECISION DOC IN ENCRIPTED EMAIL TO JENN AND MARIE THRO VA EMAIL
(!) Delete the DecisionDocument
appeal.decision_document
appeal.decision_document.delete
appeal.reload.decision_document
Reopen the root
, dispatch_org
, and dispatch_user
(!) this step makes it actively 'workable' again!
Assign the user task to the requested user
user = User.find_by_css_id(user_css_id)
Find the task IDs
appeal.reload.treee(:id, :status, :ASGN_BY, :ASGN_TO, :closed_at)
dispatch_user_task_id = " ** DISPATCH USER TASK ID ** "
dispatch_org_task_id = " ** DISPATCH ORG TASK ID ** "
root_task_id= " ** ROOT TASK ID ** "
Set task statuses accordingly
Task.find(root_task_id).update!(status: Constants.TASK_STATUSES.on_hold, closed_at: nil)
Task.find(dispatch_org_task_id).update!(status: Constants.TASK_STATUSES.on_hold, closed_at: nil)
Task.find(dispatch_user_task_id).update!(status: Constants.TASK_STATUSES.assigned, closed_at: nil, assigned_to: user, instructions: instructions)
Verify tree looks correct
appeal.reload.treee(:id, :status, :ASGN_BY, :ASGN_TO, :closed_at)