Hi @Steonard , welcome to the forum!
Not considering the order, I think that is the expected behavior. The approval
role is meant for approving the signature request, so it is triggered before any signer.
Typically I only apply the order to the signer
roles. Both the approver
and the final copy reader
order are pre-set, the approver
goes before any signer
and the final copy reader
after all signers
. Also note that a signer
is anyone that has an input to the document, and may not include a signature.
I confess I never tried to set an order to the approver
or the final copy reader
, and there might be some unexpected interaction there. Some testing is required.
Consider this sample code using the Next Gen Python SDK:
def sign_contract_step(
client: Client,
document_id: str,
destination_folder_id: str,
institution_email: str,
student_email: str,
dean_email: str,
legal_email: str,
) -> SignRequest:
"""Sign contract"""
# Sign request params
source_file = FileBase(id=document_id, type=FileBaseTypeField.FILE)
destination_folder = FolderMini(
id=destination_folder_id, type=FolderBaseTypeField.FOLDER
)
# signers
institution = SignRequestCreateSigner(
email=institution_email,
role=SignRequestCreateSignerRoleField.SIGNER,
order=1,
)
student = SignRequestCreateSigner(
email=student_email,
role=SignRequestCreateSignerRoleField.SIGNER,
order=2,
)
dean = SignRequestCreateSigner(
email=dean_email,
role=SignRequestCreateSignerRoleField.APPROVER,
)
legal = SignRequestCreateSigner(
email=legal_email,
role=SignRequestCreateSignerRoleField.FINAL_COPY_READER,
)
# create sign request
sign_request = client.sign_requests.create_sign_request(
signers=[institution, student, dean, legal],
parent_folder=destination_folder,
source_files=[source_file],
is_document_preparation_needed=True,
)
return sign_request
And its usage in a main script:
def main():
...
# Multiple signers and steps
sign_contract_multi_step = sign_contract_step(
client,
CONTRACT,
SIGN_DOCS_FOLDER,
institution_email=SIGNER_A,
student_email=SIGNER_B,
dean_email=APPROVER,
legal_email=FINAL_COPY,
)
if sign_contract_multi_step.prepare_url is not None:
open_browser(sign_contract_multi_step.prepare_url)
Notice in the example below that the institution is represented by the blue color in the left, and the student by green on the right, both are signers
Neither the approver
nor the final copy reader
can have inputs associated with them. If you do this, their roles will be adjusted to signer
The signature process goes like this:
First the dean approves the scholarship
Next the institution signs the scholarship
Next the student signs the scholarship
Finally the legal department receives a copy of the signed document.
Let us know if this was of any use.
Also the above example is detailed in one of our blog articles, you can check it out here:
In this article we are going to explore how to sign documents using the Box Platform. Specifically unstructured documents, and also cover…
Reading time: 10 min read
And it is also part of a sign workshop, if you’re interested, with sample code and exercises (look for sign in the readme.md):
Cheers
Ohh I get it. For some reason I thought approver was after the signer. It works as you talked about thanks so much!
You’re very welcome @Steonard
Could you mark. my answer as the solution for others benefit?
Cheers