|
| 1 | +EasyCLA Sign Flow: Sequence Overview |
| 2 | + |
| 3 | +1. *User Creates a Pull Request (PR)* |
| 4 | + ◦ A contributor initiates a PR in the repository hosted on GitHub, Gerrit, or GitLab. |
| 5 | +2. *Repository Triggers Activity Endpoint* |
| 6 | +• The repository platform sends a request to EasyCLA’s Python endpoint: |
| 7 | + ◦ v2/repository-provider/{provider}/activity |
| 8 | +3. *EasyCLA Checks User Authorization* |
| 9 | + ◦ EasyCLA internally verifies if the users involved in the PR are authorized to contribute to the repository. |
| 10 | +4. *Update Repository with User Status* |
| 11 | + ◦ EasyCLA communicates back to the repository provider, updating the status of each user as either *signed* or *not signed*. |
| 12 | +5. *User Initiates Sign Process* |
| 13 | + ◦ If a user is marked as *not signed*, they are prompted to begin the signing process and are redirected to the EasyCLA Contributor Console. |
| 14 | +6. *Contributor Chooses Sign Type* |
| 15 | +• Upon reaching the Contributor Console, the user selects one of two options: |
| 16 | + ▪︎ *Individual Contributor* |
| 17 | + ◦ *Corporate Contributor* |
| 18 | +7. *Individual Contributor Flow* |
| 19 | +• *a. Initiate Individual Signature Request* |
| 20 | +• The system invokes the Go-based endpoint: |
| 21 | + ▪︎ v4/request-individual-signature |
| 22 | + ◦ This action creates a new signature record with `signed = false` and initiates the signing process. |
| 23 | +• *a1. Redirect to DocuSign* |
| 24 | + ◦ The API handles the integration with DocuSign, preparing a callback and redirect URL, and redirects the user to DocuSign for signing. |
| 25 | +• *a2. Completion of Signing* |
| 26 | +• Once the user completes the signing on DocuSign, a callback is triggered to: |
| 27 | + ▪︎ v4/signed/individual/{installation_id}/{github_repository_id}/{change_request_id} |
| 28 | + ◦ This endpoint updates the signature record’s `signed` flag to `true`, completing the process. |
| 29 | +8. *Corporate Contributor Flow* |
| 30 | +• *b. Initiate Corporate Signature Process* |
| 31 | +9. *Redirect to Company Search* |
| 32 | + ▪︎ The user is redirected to a company search interface within the Contributor Console. |
| 33 | +10. *Search for Company* |
| 34 | +• Upon selecting a company, the system calls the Go-based search endpoint: |
| 35 | + • v3/organization/search?companyName=Info&include-signing-entity-name=false |
| 36 | + ▪︎ This retrieves the relevant company information. |
| 37 | +11. *Check and Prepare Employee Signature* |
| 38 | +• The system invokes the Python endpoint: |
| 39 | + • v2/check-prepare-employee-signature |
| 40 | + • This checks whether the company follows a Corporate CLA (CCLA) or an Entity CLA (ECLA) flow. |
| 41 | +• *i. If Company Has a CCLA:* |
| 42 | + ◦ The system verifies if the user is authorized. |
| 43 | + ◦ If *not authorized*, it prompts the user to contact the existing CLA manager for authorization. |
| 44 | +• The Go-based endpoint sends a notification to CLA managers: |
| 45 | + ◦ v4/notify-cla-managers |
| 46 | + • An email is sent to the CLA managers, and the process ends. |
| 47 | +• *ii. If Company Does Not Have a CCLA:* |
| 48 | + ◦ The system checks if the user is a CLA manager. |
| 49 | +• *A. User is a CLA Manager:* |
| 50 | +• Assigns CLA manager designee permissions via: |
| 51 | + ◦ v4/company/{companySFID}/user/{userLFID}/claGroupID/{claGroupID}/is-cla-manager-designee |
| 52 | +• Verifies the assigned role: |
| 53 | + ◦ v4/company/{companySFID}/user/{userLFID}/claGroupID/{claGroupID}/is-cla-manager-designee |
| 54 | +• If the role is confirmed, it calls the endpoint to request a corporate signature: |
| 55 | + ◦ v4/request-corporate-signature |
| 56 | + ◦ This creates the signature record, completing the process. |
| 57 | +• *B. User is Not a CLA Manager:* |
| 58 | +• Fetches company administrators using: |
| 59 | + ◦ v4/company/{companySFID}/admin |
| 60 | +• Sends an invitation to become a company admin via: |
| 61 | + ◦ /user/{userID}/invite-company-admin |
| 62 | + ◦ An email is sent to the user to invite them as a company admin, concluding the process. |
0 commit comments