bcgov / foi-flow

Freedom of Information modernization
Apache License 2.0
5 stars 3 forks source link

Search Applicant Profile #4758

Open lmullane opened 9 months ago

lmullane commented 9 months ago

Assumptions & Scope What are the assumptions for this story?

Applicant profiles from AXIS will need to be migrated into FOI Mod

Every applicant will require a profile.

Updating an applicant profile will not update the applicant contract details for Closed requests.

When an analyst updates an applicant profile, they will have the option of updating the contact details for other Open requests.

Only IAO analysts can view, search, match, create and update Applicant Profiles.

When an applicant makes a request they will provide their name and contact information. Upon review of the request, the IAO Intake analyst will need to search and check if the applicant previously has made FOI request(s) and if they already have an applicant profile in the system. The IAO Intake analyst will attempt to match the applicant name and contact information manually with existing applicant profiles and contact information already in the system. If there is no match, the Intake analyst will create a new applicant profile for the applicant.

Searches will match the information provided by the applicant when making the request ( First Name; Middle Name; Last Name; Date of Birth; Email; Primary Phone) with the same data fields for applicant profiles already on file.

Closest matches will be displayed at the top of the search results.

Assumption - searches in the Search Applicants profile will be client side and only search existing results to narrow the existing search, rather than start a new search. Confirm with team that is correct?

What is IN scope? Searching for an applicant profile

What is NOT in scope? View and select existing Applicant Profile #4761 Creating a new applicant profile Searching and selecting profiles for On Behalf of requests Adding an additional applicant category profile (i.e. different applicant type) #4763 Updating an existing applicant profile Request History for an applicant Applicant Contact History

Acceptance Criteria

Scenario 1: Search Applicant Profile from Request View

Scenario 2: Click on 'Search Applicant Profile - No match

Scenario 3: Click on 'Search Applicant Profile - 1 or more matches

Scenario 4: Cancel 'Search Applicant Profile' modal

Scenario 5: Search from 'Search Applicant Profile' modal

...

Dependencies? What is the impact of this dependency? (If so, link dependency in the ticket, make it visible in a team´s backlog)

Validation Rules? (If yes, list here)

Design @xxx - please link the Design here

Definition of Ready

  1. [ ] Is there a well articulated User Story?
  2. [ ] Is there Acceptance Criteria that covers all scenarios (happy/sad paths)?
  3. [ ] If there is a user interface, is there a design?
  4. [ ] Does the user story need user research/validation?
  5. [ ] Does this User Story needs stakeholder approval?
  6. [ ] Design / Solution accepted by Product Owner
  7. [ ] Is this user story small enough to be completed in a Sprint? Should it be split?
  8. [ ] Are the dependencies known/ understood? (technical, business, regulatory/policy)
  9. [ ] Has the story been estimated?

Definition of Done

  1. [ ] Passes developer unit tests
  2. [ ] Passes peer code review
  3. [ ] If there's a user interface, passes UX assurance
  4. [ ] Passes QA of Acceptance Criteria with verification in Dev and Test
  5. [ ] Confirm Test cases built and succeeding
  6. [ ] No regression test failures
  7. [ ] Test coverage acceptable by Product Owner
  8. [ ] Ticket ready to be merged to master or story branch
  9. [ ] Developer to list Config changes/ Update documents and designs
  10. [ ] Can be demoed in Sprint Review
  11. [ ] Tagged as part of a Release
  12. [ ] Feature flagged if required
  13. [ ] Change Management activities done?
lmullane commented 9 months ago

As discussed, On Behalf of will be a different story that will include this AC:

Scenario 2: Search Applicant Profile from Request View

abin-aot commented 9 months ago

Search Applicant Profile#4758 - 13/21 ############################################# front end

develop react components for "Search Applicants" - default to max 100(config) - same listing of Queue and client side search - 8

back end

Analyze unique of applicant on Back end - FOIRequestApplicants,FOIRequestApplicantMappings, RequestorTypes - from General, Personal Request - if there is problem, need to fix - 3

Develop Search API - takes the input from request details!- FirstName, LastName, email etc? - 5

abin-aot commented 9 months ago

Based on the analysis on implementing Applicant profiles as per the current design, information. Below are issues development team is trying to highlight to business, @JHarrietha-AOT , and this section is followed by the suggested business rules, which development team is waiting a approval and/or other flows in UX as per @JHarrietha-AOT 's opinion.

Main points around Applicant Profiles, how it is handled in AXIS vs FOI MOD application.

  1. In AXIS, Applicant Profiles(Person Name, Contact Info etc.) are Mandatory, and to be created/selected to Open/ run a life cycle of a FOI request. Also, in AXIS Contact Information is tied up with Person On the other hand , on FOI MOD Contact Information is tied with the FOI Request and a Person linked to his/her contact info via a FOI request. This is based on the fact that, a person can create FOI request for his personal and /or official needs and can be fully anonymous while he/she requests a FOI records
  2. Because of the above reason, AXIS have a process which involves communication with the applicant that can fair, good amount of information which can almost have realistic data. So till this date, this is not an issue even with AXIS Sync to FOI MOD.
  3. Now to coming to the main point, when we start implementing this/current UX design based on our current back end implementation, issue is like we will be listing will have many entries on search results of applicant profiles if the search is NOT following a near to unique identifying business rules. - Find our business rules on the section below.
  4. Also, as per the current UX design based on our current back end implementation, Updates to a contact information can mistakenly applied to another request, without FOI analyst knowing where(or what all requests!) this contact information will get updated. This is because on FOI MOD, contact information is tied up with FOI request , not to person whose identity cant be validated - known to all business team, devs etc.

Suggested business Rules, User flow.

  1. Search applicant profiles will only list applicant details as per [FirstName and/or LastName] **AND** (Email or Phone) provided EMAIL and/or Phone is NOT null on search filter coming from the request or criteria deciding . Address we can defer when we have confidence on Address data This will reduce the risk of listing users with similar names and mistakenly update contact info.
  2. We actually need a Link Contact Information between FOI requests so that the original business problem of updating contact information is for single user to multiple requests will get resolved.
  3. Also, this way business know how many requests has a particular user has created.

cc: @lmullane , @m-prodan , @nkan-aot , @richard-aot

abin-aot commented 9 months ago

During the meeting on 04/Dec, these are points we discussed and decided - as per my current understanding

  1. The business rule to show up applicant search results will be based on Email by default. Means the requests from applicants who has not provided Email will NOT show up in search even though their FirstName and LastName matches in the system, this is the default behavior.
  2. There will be an alternative option on the system, @JHarrietha-AOT brings up to the current wireframes, which will allow FOI Analyst to override the default action of searching profiles/requests by email ,like toggle or something, to allow analyst to search applicant profile by FirstName, LastName of her/his choice which has no emails, phone provided.
  3. Dev Team indicated that, this alternative option will bring unrelated applicant profiles on the search results , since there is no unique identification in the system, cant rely just on names. Also, going with the alternative option results and updating it can bring issues, but business is ready to take risk and those results will not be much, as per stats @m-prodan shared(<1%). This situation will be more specific after decommissioning of AXIS though.
  4. @nkan-aot has brought up the concern POST linking situation of profiles and indicated that Names will sync'd without any audits left back and inquired what should we do for closed requests, Yes that was a valid concern. @richard-aot , other members suggested a versioning logic for applicant profiles and sys, generated comments for open requests. and closed requests should be left as is. Business indicated this will be a new user story as per priority. @abin-aot , suggested its better to do along with this, but @m-prodan , @lmullane , and other business will decide the priority soon
  5. The auto-sync of contact information, based on the email on FOI MOD can be done as an exercise on test-marshal, and demo to the business once we reach a logical end on these tasks if they are OK, then we will make it PROD release step. cc: @abin-aot
  6. So from UX/UX design perspective, Team will require UX for toggling default search by Email based business rule and by open ended results of user specific search criteria. Also, additional UX updates to make analyst know while updating Address and/or any contact information on FOI MOD on applicant profile that will be impacting other requests, or any wording of that lines

cc: @JHarrietha-AOT @richard-aot @nkan-aot @lmullane @m-prodan

nkan-aot commented 9 months ago

12/5 standup

@JHarrietha-AOT @abin-aot

abin-aot commented 9 months ago

Applicant Profile Sample.xlsx This is the sample data file team used to explain various Person to multiple contact info scenarios(Work vs Personal), then multiple Personal addresses based on life situation, but same email and/or phone - which derived the above mentioned business rule

nkan-aot commented 9 months ago

12/11/2023 standup

nkan-aot commented 9 months ago

12/12/2023 standup

KyEggleston commented 9 months ago

From stand-up today - One thing to be mindful of, with our fees process, sometimes users need to place a request 'On Hold', or beyond, without sending the automated fee email. Right now this is done by removing their email, saving, placing request 'On Hold', then adding the email back. This will bypass the automated email being sent. If we remove their ability to edit this field after opening, there may be side effects / issues (they would need to do this in the applicant profile then).

richard-aot commented 9 months ago

Latest code committed to test-marshal-RQ-4758

Endpoints:

nkan-aot commented 9 months ago

my branch for front end is test-marshal-NK-4761

nkan-aot commented 8 months ago

https://miro.com/app/board/uXjVMtjQyiU=/

richard-aot commented 8 months ago

Made a few changes on backend:

  1. Added "applicantprofileid" to "FOIRequestApplicants" as the unique identifier for applicant profile
  2. Removed version from "FOIRequestApplicants" and "FoiRequestApplicantMappings"
  3. New process for updating applicant profile: 3.1 Create a new row in "FOIRequestApplicants" if any of the "FOIRequestApplicants" column values got updated, and link the new row to old ones with "applicantprofileid"; then add new mapping in "FoiRequestApplicantMappings" 3.2 Create a new version in "FOIRequests", "FOIMinistryRequests" if any of the column values in those two tables are updated; then add new mapping in "FoiRequestApplicantMappings"