We are using a!safelink to provide provision to download a file using presigned URL. The requirement is we need to store which user clicked on the link and when in audit table, but
as in the safelink there are no saveinto parameter . I tried multiple other ways but all in vain.
I am unable to find a solution, where on a single click user able to navigate using presigned url as well as in backed it writes to audit.
please advise what to do that in this case and any work around we can do to achieve the requirement.
Thank you in advance
Discussion posts and replies are publicly visible
Except your solution (while also good) has a similar, if reversed, weakness - namely, you can't force a user to click "submit" on a process start form, so some users will merely click away / close the browser window / etc, meaning they'd never get a log entry generated.
In my solution above, the caveat that the customers would need to understand and accept would be "these logged instances are where a user was SHOWN the external link / download link". While some exceptions might exist where the user "generated" the link but never clicked it, there would at least be zero link clicks without a log entry. (Also even in your Start Form solution, some users could still click into the start form and hit "submit" without clicking on the external / download link, leaving us with the same logging disparity anyway.)
What you are saying makes sense! There might not be a perfect solution but with 2 clicks it’s as close as it can be.
Hi Anvesh, Not sure if you are still looking for a solution. I had a similar requirement, and this is how I got it done.
Step 1: Create a Web API (POST Method) that creates audit history either using startProcess or writeRecords logic.
Step 2: Create an integration to make a call to this Web API. We need these 2 objects since we cannot call POST Web API as part of a safe link.
Step 3: Create a Web API (GET Method) which will redirect the user to the appropriate link as show in the inserted code.
Step 4: Provide the URL of the Web API created at Step 3 as safe link.
Hope this helps.
a!httpResponse( statusCode: 301, headers: { a!httpHeader( name: "Location", value: http!request.queryParameters.uri /*This is the URL to which the user should be navigated*/ ) }, body: rule!PREFIX_POST_AuditHistory( ....... ) /*this is the integration call to write audit history*/ )