Skip to content

Commit cde4b87

Browse files
Add sign-flow.md
Signed-off-by: Łukasz Gryglicki <[email protected]>
1 parent 2d3bf28 commit cde4b87

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

sign-flow.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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&amp;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

Comments
 (0)