SlideShare a Scribd company logo
Where Do I Sign?
Right on the Line!
Extending Alfresco Digital
Workspace with DocuSign
Bindu Wavell – bindu@ziaconsulting.com
Vijay Prince – vprince@ziaconsulting.com
Extending Alfresco Digital Workspace with Docusign
Learn. Connect. Collaborate.
Alfresco
Workspace
Extensions
The Alfresco Workspace team pioneered a way to
dynamically configure key user interface elements
such as: navigation sidebar links and groups,
context menus, info drawers, toolbar elements,
viewer actions, and metadata views all through a
single JSON file. Think Aikau but simpler.
Learn. Connect. Collaborate.
The Workspace team recently added the ability to
use external Angular libraries to bring in custom
user interface elements.
Libraries can replace, add, or even remove
components. Can also set up routing and rules.
Alfresco
Workspace
Extensions
Learn. Connect. Collaborate.
Alfresco
Workspace
Extensions
Integrating extension configuration into the main
app is done by including extension configuration
in the app configuration.
Learn. Connect. Collaborate.
Flow/SPA OAuth
User triggers
action to sign
document
Do we
have valid
DocuSign
token for
user?
Document sent
to DocuSign
and user
redirected to
signature page
User signs or
cancels
signing in
DocuSign
Redirected to
Alfresco Workspace.
If signed, document
is updated in
Alfresco
User
redirected to
DocuSign
sign-in page
Yes
No
Did user
sign in and
grant
access?
Redirected to
Alfresco
Workspace,
action is not
performed
No
Redirected to
Alfresco
Workspace,
action is
retried
Yes
Learn. Connect. Collaborate.
Flow/SPA OAuth
User triggers
action to sign
document
Do we
have valid
DocuSign
token for
user?
Document sent
to DocuSign
and user
redirected to
signature page
User signs or
cancels
signing in
DocuSign
Redirected to
Alfresco Workspace.
If signed, document
is updated in
Alfresco
Yes
Extending Alfresco Digital Workspace with Docusign
Learn. Connect. Collaborate.
Flow/SPA OAuth
User triggers
action to sign
document
Do we
have valid
DocuSign
token for
user?
Document sent
to DocuSign
and user
redirected to
signature page
User signs or
cancels
signing in
DocuSign
Redirected to
Alfresco Workspace.
If signed, document
is updated in
Alfresco
User
redirected to
DocuSign
sign-in page
Did user
sign in and
grant
access?
Redirected to
Alfresco
Workspace,
action is
retried
Yes
No
Extending Alfresco Digital Workspace with Docusign
Learn. Connect. Collaborate.
Routing
Challenges
● OAuth response handling with WebScript
● For SPA to reach DocuSign, we have to proxy
DocuSign Auth and API calls:
Learn. Connect. Collaborate.
App
Configuratio
n
We use central app config file for passing in
DocuSign integrator key (possibly other things
like dev/prod DocuSign servers, etc.)
Learn. Connect. Collaborate.
NGRX
Store/Actions
/Effects
● ngrx - reactive state for Angular
● State is managed in single hierarchy
(store)
● Actions are dispatched to indicate
something happened
● (Side)Effects observe actions and
transform state in response
Learn. Connect. Collaborate.
NGRX
Store/Actions
/Effects
● Alfresco Workspace uses ngrx internally
○ Dispatch actions to navigate, display
messages, or open dialogs, etc…
● Extensions can create new actions,
respond to new and existing actions, and
dispatch new and existing actions
● We made an action/effect pair for signing
a document and configured it into the
document list and preview screens
Learn. Connect. Collaborate.
Packaging &
Installing
Extensions
● You can npm publish your extension and then
Alfresco Workspace projects can depend on
your extension.
● However, some config will be required
● Denys’ ngi command line tool can perform
most of this configuration for you
● Can install from npm or from a tar file
Learn. Connect. Collaborate.
Upgrading
Alfresco
Workspace
● We forked the Alfresco Workspace repository
● We created a development branch from
master
● When cloning our project
● origin points to our fork
● upstream points to original project from
Alfresco
● Feature branches off of our development
● Pull requests back to our development
● We can pull updates into master from
upstream and then rebase development on
the new master
● We never commit to our master
Learn. Connect. Collaborate.
Misc.
● Had issues with GETing document content
using Alfresco JS API from browser (worked
fine from node)
● Including third-party JavaScript libraries when
type definitions can’t be found
● Using browserify
Questions?

More Related Content

What's hot (19)

DevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoDevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with Alfresco
Gavin Cornwell
 
Peltas - get insights on your Alfresco data
Peltas - get insights on your Alfresco dataPeltas - get insights on your Alfresco data
Peltas - get insights on your Alfresco data
Daniel Gradecak
 
How to win skeptics to aggregated logging using Vagrant and ELK
How to win skeptics to aggregated logging using Vagrant and ELKHow to win skeptics to aggregated logging using Vagrant and ELK
How to win skeptics to aggregated logging using Vagrant and ELK
Skelton Thatcher Consulting Ltd
 
Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018
Mario Romano
 
Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)
J V
 
Alfresco monitoring with Nagios and ELK stack
Alfresco monitoring with Nagios and ELK stackAlfresco monitoring with Nagios and ELK stack
Alfresco monitoring with Nagios and ELK stack
Cesar Capillas
 
Let's play with adf 3.0
Let's play with adf 3.0Let's play with adf 3.0
Let's play with adf 3.0
Eugenio Romano
 
10 Tips Every New Developer in Alfresco Should Know
10 Tips Every New Developer in Alfresco Should Know10 Tips Every New Developer in Alfresco Should Know
10 Tips Every New Developer in Alfresco Should Know
Angel Borroy López
 
Elk ruminating on logs
Elk ruminating on logsElk ruminating on logs
Elk ruminating on logs
Mathew Beane
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for Alfresco
Richard McKnight
 
Alfresco Process Services extension project - Alfresco DevCon 2018
Alfresco Process Services extension project - Alfresco DevCon 2018Alfresco Process Services extension project - Alfresco DevCon 2018
Alfresco Process Services extension project - Alfresco DevCon 2018
Dennis Koch
 
ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018
Mario Romano
 
From zero to hero Backing up alfresco
From zero to hero Backing up alfrescoFrom zero to hero Backing up alfresco
From zero to hero Backing up alfresco
Toni de la Fuente
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
Christian Posta
 
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Francesco Corti
 
Jose portillo dev con presentation 1138
Jose portillo   dev con presentation 1138Jose portillo   dev con presentation 1138
Jose portillo dev con presentation 1138
Jose Portillo
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
Christian Posta
 
2019 DevCon - The future of Authentication by Codrin Chirica
2019 DevCon - The future of Authentication by Codrin Chirica2019 DevCon - The future of Authentication by Codrin Chirica
2019 DevCon - The future of Authentication by Codrin Chirica
Codrin Chirica
 
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Claus Ibsen
 
DevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoDevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with Alfresco
Gavin Cornwell
 
Peltas - get insights on your Alfresco data
Peltas - get insights on your Alfresco dataPeltas - get insights on your Alfresco data
Peltas - get insights on your Alfresco data
Daniel Gradecak
 
How to win skeptics to aggregated logging using Vagrant and ELK
How to win skeptics to aggregated logging using Vagrant and ELKHow to win skeptics to aggregated logging using Vagrant and ELK
How to win skeptics to aggregated logging using Vagrant and ELK
Skelton Thatcher Consulting Ltd
 
Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018
Mario Romano
 
Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)
J V
 
Alfresco monitoring with Nagios and ELK stack
Alfresco monitoring with Nagios and ELK stackAlfresco monitoring with Nagios and ELK stack
Alfresco monitoring with Nagios and ELK stack
Cesar Capillas
 
Let's play with adf 3.0
Let's play with adf 3.0Let's play with adf 3.0
Let's play with adf 3.0
Eugenio Romano
 
10 Tips Every New Developer in Alfresco Should Know
10 Tips Every New Developer in Alfresco Should Know10 Tips Every New Developer in Alfresco Should Know
10 Tips Every New Developer in Alfresco Should Know
Angel Borroy López
 
Elk ruminating on logs
Elk ruminating on logsElk ruminating on logs
Elk ruminating on logs
Mathew Beane
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for Alfresco
Richard McKnight
 
Alfresco Process Services extension project - Alfresco DevCon 2018
Alfresco Process Services extension project - Alfresco DevCon 2018Alfresco Process Services extension project - Alfresco DevCon 2018
Alfresco Process Services extension project - Alfresco DevCon 2018
Dennis Koch
 
ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018ADF Basics and Beyond - Alfresco Devcon 2018
ADF Basics and Beyond - Alfresco Devcon 2018
Mario Romano
 
From zero to hero Backing up alfresco
From zero to hero Backing up alfrescoFrom zero to hero Backing up alfresco
From zero to hero Backing up alfresco
Toni de la Fuente
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
Christian Posta
 
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Francesco Corti
 
Jose portillo dev con presentation 1138
Jose portillo   dev con presentation 1138Jose portillo   dev con presentation 1138
Jose portillo dev con presentation 1138
Jose Portillo
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
Christian Posta
 
2019 DevCon - The future of Authentication by Codrin Chirica
2019 DevCon - The future of Authentication by Codrin Chirica2019 DevCon - The future of Authentication by Codrin Chirica
2019 DevCon - The future of Authentication by Codrin Chirica
Codrin Chirica
 
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Meetup Melbourne August 2017 - Agile Integration with Apache Camel microservi...
Claus Ibsen
 

Similar to Extending Alfresco Digital Workspace with Docusign (20)

Extensibility for ADF applications
Extensibility for ADF applicationsExtensibility for ADF applications
Extensibility for ADF applications
Denys Vuika
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Nicole Szigeti
 
Alfresco for Salesforce
Alfresco for SalesforceAlfresco for Salesforce
Alfresco for Salesforce
Jared Ottley
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Jeff Potts
 
CUST-3 Document Management with Share
CUST-3 Document Management with ShareCUST-3 Document Management with Share
CUST-3 Document Management with Share
Alfresco Software
 
Alfresco Day Platform Update
Alfresco Day Platform UpdateAlfresco Day Platform Update
Alfresco Day Platform Update
ohej
 
Alfresco Integrations - Alfresco Devcon 2012
Alfresco Integrations - Alfresco Devcon 2012Alfresco Integrations - Alfresco Devcon 2012
Alfresco Integrations - Alfresco Devcon 2012
Jared Ottley
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI Development
Nicole Szigeti
 
Alfresco Day Vienna 2015 - Technical Track - Developer Platform Updates
Alfresco Day Vienna 2015 - Technical Track - Developer Platform UpdatesAlfresco Day Vienna 2015 - Technical Track - Developer Platform Updates
Alfresco Day Vienna 2015 - Technical Track - Developer Platform Updates
Alfresco Software
 
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + DemoAlfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Alfresco Software
 
Zyncro rest api feb 2013
Zyncro rest api feb 2013 Zyncro rest api feb 2013
Zyncro rest api feb 2013
Zyncro
 
Alfresco overview EDM
Alfresco overview EDMAlfresco overview EDM
Alfresco overview EDM
sang nguyen
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best Practices
Alfresco Software
 
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other PlatformsAlfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
davidocmillergmailcom
 
IA Powered Alfresco Profile
IA Powered Alfresco ProfileIA Powered Alfresco Profile
IA Powered Alfresco Profile
Sameer Mittal
 
InfoAxon Powered Alfresco
InfoAxon Powered AlfrescoInfoAxon Powered Alfresco
InfoAxon Powered Alfresco
InfoAxon Technologies Limited
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best Practices
Alfresco Software
 
Alfresco Day Amsterdam 2015 - Developer Platform Updates
Alfresco Day Amsterdam 2015 - Developer Platform UpdatesAlfresco Day Amsterdam 2015 - Developer Platform Updates
Alfresco Day Amsterdam 2015 - Developer Platform Updates
Alfresco Software
 
Alfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform UpdateAlfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform Update
Nicole Szigeti
 
2 Magma Introduction
2 Magma Introduction2 Magma Introduction
2 Magma Introduction
vegamario
 
Extensibility for ADF applications
Extensibility for ADF applicationsExtensibility for ADF applications
Extensibility for ADF applications
Denys Vuika
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Nicole Szigeti
 
Alfresco for Salesforce
Alfresco for SalesforceAlfresco for Salesforce
Alfresco for Salesforce
Jared Ottley
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Jeff Potts
 
CUST-3 Document Management with Share
CUST-3 Document Management with ShareCUST-3 Document Management with Share
CUST-3 Document Management with Share
Alfresco Software
 
Alfresco Day Platform Update
Alfresco Day Platform UpdateAlfresco Day Platform Update
Alfresco Day Platform Update
ohej
 
Alfresco Integrations - Alfresco Devcon 2012
Alfresco Integrations - Alfresco Devcon 2012Alfresco Integrations - Alfresco Devcon 2012
Alfresco Integrations - Alfresco Devcon 2012
Jared Ottley
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI Development
Nicole Szigeti
 
Alfresco Day Vienna 2015 - Technical Track - Developer Platform Updates
Alfresco Day Vienna 2015 - Technical Track - Developer Platform UpdatesAlfresco Day Vienna 2015 - Technical Track - Developer Platform Updates
Alfresco Day Vienna 2015 - Technical Track - Developer Platform Updates
Alfresco Software
 
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + DemoAlfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Alfresco Day Brussels 2016 - Alfresco One Product Suite Update + Demo
Alfresco Software
 
Zyncro rest api feb 2013
Zyncro rest api feb 2013 Zyncro rest api feb 2013
Zyncro rest api feb 2013
Zyncro
 
Alfresco overview EDM
Alfresco overview EDMAlfresco overview EDM
Alfresco overview EDM
sang nguyen
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best Practices
Alfresco Software
 
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other PlatformsAlfresco DevCon 2019: BiDirectional Sync to Other Platforms
Alfresco DevCon 2019: BiDirectional Sync to Other Platforms
davidocmillergmailcom
 
IA Powered Alfresco Profile
IA Powered Alfresco ProfileIA Powered Alfresco Profile
IA Powered Alfresco Profile
Sameer Mittal
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best Practices
Alfresco Software
 
Alfresco Day Amsterdam 2015 - Developer Platform Updates
Alfresco Day Amsterdam 2015 - Developer Platform UpdatesAlfresco Day Amsterdam 2015 - Developer Platform Updates
Alfresco Day Amsterdam 2015 - Developer Platform Updates
Alfresco Software
 
Alfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform UpdateAlfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform Update
Nicole Szigeti
 
2 Magma Introduction
2 Magma Introduction2 Magma Introduction
2 Magma Introduction
vegamario
 

Recently uploaded (20)

Contributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptxContributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptx
Patrick Lumumba
 
Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)
Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)
Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)
Eugene Fidelin
 
Content and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-TrainingContent and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-Training
Rustici Software
 
Building Agents with LangGraph & Gemini
Building Agents with LangGraph &  GeminiBuilding Agents with LangGraph &  Gemini
Building Agents with LangGraph & Gemini
HusseinMalikMammadli
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
A Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment GatewayA Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment Gateway
danielle hunter
 
Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Dr Jimmy Schwarzkopf presentation on the SUMMIT 2025 A
Dr Jimmy Schwarzkopf presentation on the SUMMIT 2025 ADr Jimmy Schwarzkopf presentation on the SUMMIT 2025 A
Dr Jimmy Schwarzkopf presentation on the SUMMIT 2025 A
Dr. Jimmy Schwarzkopf
 
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
 
cloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mitacloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mita
siyaldhande02
 
Grannie’s Journey to Using Healthcare AI Experiences
Grannie’s Journey to Using Healthcare AI ExperiencesGrannie’s Journey to Using Healthcare AI Experiences
Grannie’s Journey to Using Healthcare AI Experiences
Lauren Parr
 
Introducing Ensemble Cloudlet vRouter
Introducing Ensemble  Cloudlet vRouterIntroducing Ensemble  Cloudlet vRouter
Introducing Ensemble Cloudlet vRouter
Adtran
 
Security Operations and the Defense Analyst - Splunk Certificate
Security Operations and the Defense Analyst - Splunk CertificateSecurity Operations and the Defense Analyst - Splunk Certificate
Security Operations and the Defense Analyst - Splunk Certificate
VICTOR MAESTRE RAMIREZ
 
UiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build PipelinesUiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build Pipelines
UiPathCommunity
 
Agentic AI - The New Era of Intelligence
Agentic AI - The New Era of IntelligenceAgentic AI - The New Era of Intelligence
Agentic AI - The New Era of Intelligence
Muzammil Shah
 
Measuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI SuccessMeasuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI Success
Nikki Chapple
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 Professio
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 ProfessioMaster tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 Professio
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 Professio
Kari Kakkonen
 
New Ways to Reduce Database Costs with ScyllaDB
New Ways to Reduce Database Costs with ScyllaDBNew Ways to Reduce Database Costs with ScyllaDB
New Ways to Reduce Database Costs with ScyllaDB
ScyllaDB
 
Contributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptxContributing to WordPress With & Without Code.pptx
Contributing to WordPress With & Without Code.pptx
Patrick Lumumba
 
Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)
Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)
Marko.js - Unsung Hero of Scalable Web Frameworks (DevDays 2025)
Eugene Fidelin
 
Content and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-TrainingContent and eLearning Standards: Finding the Best Fit for Your-Training
Content and eLearning Standards: Finding the Best Fit for Your-Training
Rustici Software
 
Building Agents with LangGraph & Gemini
Building Agents with LangGraph &  GeminiBuilding Agents with LangGraph &  Gemini
Building Agents with LangGraph & Gemini
HusseinMalikMammadli
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
Let’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack CommunityLet’s Get Slack Certified! 🚀- Slack Community
Let’s Get Slack Certified! 🚀- Slack Community
SanjeetMishra29
 
A Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment GatewayA Comprehensive Guide on Integrating Monoova Payment Gateway
A Comprehensive Guide on Integrating Monoova Payment Gateway
danielle hunter
 
Supercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMsSupercharge Your AI Development with Local LLMs
Supercharge Your AI Development with Local LLMs
Francesco Corti
 
Dr Jimmy Schwarzkopf presentation on the SUMMIT 2025 A
Dr Jimmy Schwarzkopf presentation on the SUMMIT 2025 ADr Jimmy Schwarzkopf presentation on the SUMMIT 2025 A
Dr Jimmy Schwarzkopf presentation on the SUMMIT 2025 A
Dr. Jimmy Schwarzkopf
 
TrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy ContractingTrustArc Webinar: Mastering Privacy Contracting
TrustArc Webinar: Mastering Privacy Contracting
TrustArc
 
cloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mitacloudgenesis cloud workshop , gdg on campus mita
cloudgenesis cloud workshop , gdg on campus mita
siyaldhande02
 
Grannie’s Journey to Using Healthcare AI Experiences
Grannie’s Journey to Using Healthcare AI ExperiencesGrannie’s Journey to Using Healthcare AI Experiences
Grannie’s Journey to Using Healthcare AI Experiences
Lauren Parr
 
Introducing Ensemble Cloudlet vRouter
Introducing Ensemble  Cloudlet vRouterIntroducing Ensemble  Cloudlet vRouter
Introducing Ensemble Cloudlet vRouter
Adtran
 
Security Operations and the Defense Analyst - Splunk Certificate
Security Operations and the Defense Analyst - Splunk CertificateSecurity Operations and the Defense Analyst - Splunk Certificate
Security Operations and the Defense Analyst - Splunk Certificate
VICTOR MAESTRE RAMIREZ
 
UiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build PipelinesUiPath Community Zurich: Release Management and Build Pipelines
UiPath Community Zurich: Release Management and Build Pipelines
UiPathCommunity
 
Agentic AI - The New Era of Intelligence
Agentic AI - The New Era of IntelligenceAgentic AI - The New Era of Intelligence
Agentic AI - The New Era of Intelligence
Muzammil Shah
 
Measuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI SuccessMeasuring Microsoft 365 Copilot and Gen AI Success
Measuring Microsoft 365 Copilot and Gen AI Success
Nikki Chapple
 
Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...Cyber security cyber security cyber security cyber security cyber security cy...
Cyber security cyber security cyber security cyber security cyber security cy...
pranavbodhak
 
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 Professio
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 ProfessioMaster tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 Professio
Master tester AI toolbox - Kari Kakkonen at Testaus ja AI 2025 Professio
Kari Kakkonen
 
New Ways to Reduce Database Costs with ScyllaDB
New Ways to Reduce Database Costs with ScyllaDBNew Ways to Reduce Database Costs with ScyllaDB
New Ways to Reduce Database Costs with ScyllaDB
ScyllaDB
 

Extending Alfresco Digital Workspace with Docusign

  • 1. Where Do I Sign? Right on the Line! Extending Alfresco Digital Workspace with DocuSign Bindu Wavell – [email protected] Vijay Prince – [email protected]
  • 3. Learn. Connect. Collaborate. Alfresco Workspace Extensions The Alfresco Workspace team pioneered a way to dynamically configure key user interface elements such as: navigation sidebar links and groups, context menus, info drawers, toolbar elements, viewer actions, and metadata views all through a single JSON file. Think Aikau but simpler.
  • 4. Learn. Connect. Collaborate. The Workspace team recently added the ability to use external Angular libraries to bring in custom user interface elements. Libraries can replace, add, or even remove components. Can also set up routing and rules. Alfresco Workspace Extensions
  • 5. Learn. Connect. Collaborate. Alfresco Workspace Extensions Integrating extension configuration into the main app is done by including extension configuration in the app configuration.
  • 6. Learn. Connect. Collaborate. Flow/SPA OAuth User triggers action to sign document Do we have valid DocuSign token for user? Document sent to DocuSign and user redirected to signature page User signs or cancels signing in DocuSign Redirected to Alfresco Workspace. If signed, document is updated in Alfresco User redirected to DocuSign sign-in page Yes No Did user sign in and grant access? Redirected to Alfresco Workspace, action is not performed No Redirected to Alfresco Workspace, action is retried Yes
  • 7. Learn. Connect. Collaborate. Flow/SPA OAuth User triggers action to sign document Do we have valid DocuSign token for user? Document sent to DocuSign and user redirected to signature page User signs or cancels signing in DocuSign Redirected to Alfresco Workspace. If signed, document is updated in Alfresco Yes
  • 9. Learn. Connect. Collaborate. Flow/SPA OAuth User triggers action to sign document Do we have valid DocuSign token for user? Document sent to DocuSign and user redirected to signature page User signs or cancels signing in DocuSign Redirected to Alfresco Workspace. If signed, document is updated in Alfresco User redirected to DocuSign sign-in page Did user sign in and grant access? Redirected to Alfresco Workspace, action is retried Yes No
  • 11. Learn. Connect. Collaborate. Routing Challenges ● OAuth response handling with WebScript ● For SPA to reach DocuSign, we have to proxy DocuSign Auth and API calls:
  • 12. Learn. Connect. Collaborate. App Configuratio n We use central app config file for passing in DocuSign integrator key (possibly other things like dev/prod DocuSign servers, etc.)
  • 13. Learn. Connect. Collaborate. NGRX Store/Actions /Effects ● ngrx - reactive state for Angular ● State is managed in single hierarchy (store) ● Actions are dispatched to indicate something happened ● (Side)Effects observe actions and transform state in response
  • 14. Learn. Connect. Collaborate. NGRX Store/Actions /Effects ● Alfresco Workspace uses ngrx internally ○ Dispatch actions to navigate, display messages, or open dialogs, etc… ● Extensions can create new actions, respond to new and existing actions, and dispatch new and existing actions ● We made an action/effect pair for signing a document and configured it into the document list and preview screens
  • 15. Learn. Connect. Collaborate. Packaging & Installing Extensions ● You can npm publish your extension and then Alfresco Workspace projects can depend on your extension. ● However, some config will be required ● Denys’ ngi command line tool can perform most of this configuration for you ● Can install from npm or from a tar file
  • 16. Learn. Connect. Collaborate. Upgrading Alfresco Workspace ● We forked the Alfresco Workspace repository ● We created a development branch from master ● When cloning our project ● origin points to our fork ● upstream points to original project from Alfresco ● Feature branches off of our development ● Pull requests back to our development ● We can pull updates into master from upstream and then rebase development on the new master ● We never commit to our master
  • 17. Learn. Connect. Collaborate. Misc. ● Had issues with GETing document content using Alfresco JS API from browser (worked fine from node) ● Including third-party JavaScript libraries when type definitions can’t be found ● Using browserify

Editor's Notes

  • #2: BOTH Vijay Prince – Solution Architect at Zia. Geek night?. First ADF project. 4-5hrs/week for 2 months. Great learning experience
  • #3: BINDU Story: At Zia, we have created a couple of digital-signature integrations to Alfresco Share, one of these integrates DocuSign. Alfresco invited us to participate in the launch of the extension mechanism for Alfresco Workspace (Alfresco Content App.) Right from the beginning Alfresco suggested that another DocuSign integration would make a great story. We set out to create a basic integration where people could sign their own documents. We have grand plans to allow for other flows and configurability like requesting signatures from others (fixed lists and ad-hoc.)
  • #4: BINDU Denys Vuika will be presenting Extensibility for ADF Applications next in this room. https://devcon.alfresco.com/speaker/denys-vuika/ https://alfresco.github.io/alfresco-content-app/#/extending/ https://angular.io/guide/libraries Configure via JSON files.. It can dynamically reference components / features/ routes that are in the main application or in a library
  • #5: BINDU Denys Vuika will be presenting Extensibility for ADF Applications next in this room. https://devcon.alfresco.com/speaker/denys-vuika/ https://alfresco.github.io/alfresco-content-app/#/extending/ https://angular.io/guide/libraries Configure via JSON files.. It can dynamically reference components / features/ routes that are in the main application or in a library
  • #6: BINDU Denys Vuika will be presenting Extensibility for ADF Applications next in this room. https://devcon.alfresco.com/speaker/denys-vuika/ https://alfresco.github.io/alfresco-content-app/#/extending/ https://angular.io/guide/libraries Configure via JSON files.. It can dynamically reference components / features/ routes that are in the main application or in a library
  • #7: BINDU https://oauth.net/2/grant-types/implicit/ https://auth0.com/docs/flows/concepts/single-page-login-flow https://developer.okta.com/blog/2018/05/24/what-is-the-oauth2-implicit-grant-type
  • #8: VIJAY As Bindu mentioned, there are 2 main workflows. The first workflow will show the signing process with a DocuSign Authenticated session. The second workflow will show the signing process where there is no DocuSign Authenticated session. https://oauth.net/2/grant-types/implicit/ https://auth0.com/docs/flows/concepts/single-page-login-flow https://developer.okta.com/blog/2018/05/24/what-is-the-oauth2-implicit-grant-type
  • #9: VIJAY We want to sign the document that is shown in the preview screen. Lets look at the process.. What just happened? Let us walk through the steps. We have configured the preview page to show the ‘Sign Document’ action. Since we have an authenticated DocuSign session, we are sending the document to DocuSign for signature as shown in the SnackBar. The document is opened in the embedded signing flow in DocuSign. The user signs the document. DocuSign makes a callback to Alfresco Workspace. Workspace now fetches the signed document from DocuSign and updates in Alfresco.
  • #10: VIJAY In this workflow, the user has to Authenticate with DocuSign before they can sign a document. The interesting part of this workflow is that..Workspace remembers the action that the user wanted to do before authentication..In this case, ‘Sign Document’ action is called after authentication. Docusign Auth -> redirect to workspace -> call ‘Sign Document’ action -> Upload the doc to docusign and sign -> Make a callback to Workspace -> Fetch signed doc from docusign -> update in Alfresco https://oauth.net/2/grant-types/implicit/ https://auth0.com/docs/flows/concepts/single-page-login-flow https://developer.okta.com/blog/2018/05/24/what-is-the-oauth2-implicit-grant-type
  • #11: VIJAY In this workflow, we have configured the Document List view to show the ‘Sign Document’ action. This workflow will show that the user has to Authenticate with DocuSign before they can sign a document. we authenticate in DocuSign and redirects back to workspace. workspace remembers the action that was performed and it uploads the document to DocuSign...then it redirects to the embedded signing flow. DocuSign redirects back to the document list. Workspace fetches the signed document from DocuSign and updates the document in Alfresco. We are going back to preview just to show the signature is there
  • #12: BINDU Alfresco uses Hashbased routing by default. Docusign returns hash based routes and we had to use webscripts to handle routing from Docusign CORS issue - simplest way is to serve the angular app to proxy the services
  • #13: VIJAY to integrate with DocuSign, we need a client id (integrator key). each installation will have a different id. we dont want to bake this into the code. We want to use a central configuration file. Workspace uses app.config.json for its extensions.. We just added our custom configuration into this app config file to be used in the code. The screenshot at the left shows us retrieving the clientId from the config file.
  • #14: BINDU https://ngrx.io/ NGRX is a framework inspired by Redux. Alfresco uses ngrx for state information. It is used to dispatch actions. The effect gets the action and a piece of the state, performs business logic and then updates the state
  • #15: BINDU https://ngrx.io/ Alfresco uses ngrx for state information. It is used to dispatch actions. The effects gets th action and a piece of the state, performs business logic and then updates the state
  • #16: VIJAY ngi.json - we want to package our extension so that it is easy to deliver . There are 2 ways to package. 1) publish to npm or 2) create a local tar ball 1) OOTB npm install works but requires us to manually updates a few files. Like add import statements in app.module.ts and updating ‘angular.json’ with references to the assets of the extensions. 2) use ngi tool created by Denys. The ngi command line tool automates a bunch of changes we had to manually do in npm install. All you need is to install ngi tool and create a ngi.json as shown in the screenshot. The tool can take the extension as a local tar ball or from NPM and install to the project..for example, if we had a npm library, we can just say ‘ngi zia-extension’. If we had a tarball, we can use ‘ngi zia-extension-0.0.1.tgz zia-extension’. ngi updates angular.json. there are links in our slides and you can take a look at it https://medium.com/@DenysVuika/announcing-ngi-installer-for-angular-libraries-f29c003d4fcd https://www.npmjs.com/package/@ngstack/install
  • #17: BINDU
  • #18: BINDU File uploading/posting issue should be fixed in new TypeScript based Alfresco JS API. https://github.com/Alfresco/alfresco-js-api/issues/377