ASSUMPTION1: User has successfully authenticated into system.
ASSUMPTION2: User has some privileges to search for people.
ASSUMPTION3: User has chosen a System of Record to work with.
ASSUMPTION4: User is using Search as part of another flow and will thus continue on to flow.
ASSUMPTION5: System is configured as to which identifiers can be returned from a flow.
Flow
User provides values for search criteria. Currently allowed fields are:
Name (First Last or Last,First)
Date of Birth
Identifier Value (can be any SoR Unique ID or calculated ID)
Additionally, the user may provide a maximum number of search results per page to be returned. (default to 20) Only current page's worth of results are fetched from the database.
Information is submitted/sent to OpenRegistry server.
OpenRegistry system searches for people based on the following criteria/algorithm:
If an Identifier Value is provided
Try to figure out what kind of identifier it is (eg. exactly 9 numeric digits = SFUID, <9 Alpha Numeric = Computing ID)
Search for an exact match
If an exact match is NOT FOUND, then a partial match is attempted on the identifier value
If no matches are found, and a date of birth is provided, an exact match on the DOB should be tried
If a DOB match is found, then partial matching on names is attempted (see below)
If no DOB is provided, try name matching
If more than one string is entered into the "Name" field, split and do partial matching on first/last names
If one string is entered, try to match on last names then first names
Identifier Searches are conducted against calculated tables, while name, dob searches are conducted against System of Record tables.
The maximum number of search results returned per page is 20 unless otherwise indicated.
Results are returned to user, along with additional meta information such as the fact that the maximum was reached. The following fields should be returned to the user:
Official Name
Gender
Current Roles (most likely Title/Organization for Each Role)
Defined Identifiers
If one (1) result is returned, user should be transitioned to next flow (this should be discussed, often the user just needs the summary information and then wants to do another search)
If zero results are returned, user MUST be notified and text such as "Your search returned no results. You MAY wish to change your search terms" MUST be presented to the user.
If > 1, results should be presented to the user such that the user can choose which person they want and be transitioned to the next flow.
Post Conditions
PC1: User is transitioned to next flow upon selection (either manual or automatic) of person.
Business Rules
BR1: Ultimately, the fields available for search are dependent on access control levels
BR2: Ultimately, fields returned are dependent on access control levels
BR3: User MUST provide either an identifier value OR at least the last name. Those are the minimums. More information can be provided.