SlideShare une entreprise Scribd logo
1  sur  31
deep dive

Wednesday, September 8, 2010
Phillip Cave
Agenda

I. High-level technical overview
II. The what and why of Salesforce
III. Drupal modules
IV. Demo
High-level overview

I. History – from contrib to Springboard
II. Salesforce components
   –   Custom objects, triggers, and fields
   –   Workflow rules and field updates
   –   Reports
   –   Page layouts
III. Drupal components
   – 15 modules (and counting)
   – Very loosely coupled
   – Batch processing architecture
Salesforce

I. Development platform in the cloud
II. Objects
  – Core and custom

III. Apex – object oriented programming
     language
IV. Visual Force
V. Well documented API
VI. Upsert? WTF?
Fundraiser

I. Only module that doesn’t require SF
II. Smoke and mirrors with webform and
    ubercart
  – Genetically modified
    webform
demo
Fundraiser

I. Supports one-time and recurring
   donations
  – Tracks when future donations should be charged
  – Processing occurs during cron runs
  – One order id to rule them all
Salesforce Management API

I. Originally from contrib
II. Wrapper for the Salesforce PHP toolkit
  – SOAP based
  – Utilizes enterprise WSDL (also a partner WSDL)

III. Controls
  –   Fieldmaps (mostly)
  –   Business rules
  –   Connection settings
  –   Object mapping
Queue API

I. Not very robust at the moment
  – Currently has 1 function (sf_queue_insert)
  – Determines if the object:
      •   Is already in the queue
      •   Is in the retry queue
      •   Is a permanent failure
      •   Is on the heap

II. Defines the schema for the entire queue
    system
Queue API

I. Why queue
  – Accountability
      • Can get a peek into what is happening at any given time
      • Better control over when things get processed
  – Robust
      • Salesforce maintenance windows
      • Ability to take advantage of Batch API
  – Reporting
      • Batch history
      • Queues (current, retry, and permanent failures)

II. Downside
  – Upserts cannot take fieldmap rules into consideration
Queue Processor

I. Original vision
  Import Service


               User
                                                   Queue Processor
  Import Service                                           Start

               Node                                   Fieldmap assign

                                                       Pre-process
  Import Service         Global Queue
                                                           Send
            Donation
                                                       Post-process

  Import Service


            Webform


                                                              Fieldmaps

                       Salesforce Management API                   Rules
Queue Processor

I. Settings
  – Processing order: Specifies the order in which Drupal entities are
    processed
  – Maximum items per cron run: Specifies how many items should
    be processed per cron run (default 1,000)
  – Batch size: Maximum number of items to include in a batch
    (default 200)
  – Maximum retry attempt: The number of times an entity will be
    retried before being marked as a permanent failure (default 3)
  – Email summary: The email addresses that will receive a
    summary of batches processed after each cron run
Queue Processor

I. Available triggers
  –   A connection to Salesforce cannot be established
  –   An object fails to export to Salesforce
  –   An object is moved to the retry queue
  –   An object becomes a permanent failure
  –   A SOAP fault occurs
Queue Processor

                                                                yes
  Lock queue items   Get all locked items           EOF?               Process heap




                                                         no



  What                                      yes
                                                  Fieldmap
                                                                no
                                                                      Assign fieldmap
                                                  assigned?


  happens                                                yes


  when
                                                   In heap?

  cron
                                                         no

  runs                                            Add to heap
Queue Processor
       Heap                                    Batch 1
                                               Type: user
User       upsert   Batch 3                    Action: upsert
                    Type: node
Donation   upsert   Action upsert

Node       upsert                                   Sweet! 2
                                                     Batch
User       upsert                                    Type: donation
                                                     Action: upsert
Webformupsert
                              Batch 4
                              Type: webform
Node       update             Action: upsert

User       update

User       update                                     Batch 5
                                                      Type: node
Donation   upsert
                                                      Action: update
User       delete   Batch 6
                    Type: user
Donation   upsert   Action: update

Webformupsert                                         Batch 7
                                                      Type: user
Node       upsert                                     Action: delete
User       update

Node       update
Queue Processor

I. Hooks
  – hook_queue_fieldmap_assignment_alter()
     • Allows a module to assign a fieldmap to an item in the queue before it is
       placed in the heap
  – hook_queue_preprocess_batch_alter()
     • Alter the entire batch – object building happens here
  – hook_queue_batch_item_alter()
     • Alter an individual item in the batch (last ditch effort)
  – hook_queue_postprocess_batch()
     • Modules can further process the data after the calls to Salesforce
  – hook_queue_salesforce_info()
     • Allows a module to expose it’s own fieldmap and dedupe schema
Queue Processor

I. Reports
  –   Batch history
  –   Currently queued items
  –   Retry queue
  –   Permanent failures
Queue Processor

I. Batch history
  – Insight into an individual batch
Queue Processor

I. Currently queued items
  – Shows items that are currently in the queue
  – Will reset after every cron run
  – queue_report_item_title()
Queue Processor

I. Retry queue
  – Where the bad boys go
Queue Processor

I. Permanent failures
  – Where the really bad boys go
SF User

I. Drupal user integration module
SF Node

I. Node integration module
  – New!
SF Node Import

I. Complement to SF Node
II. Define criteria for selecting objects in
     Salesforce
III. Can update or create new nodes in
     Drupal
IV. Requires defined fieldmap
SF Donation

I. Donation integration module
SF Webform

I. Webform integration module
Webform User

I. Worst module name in history (thanks
     Tom)
II. Free beer to whoever comes up with a
     better name
III. Adds account and profile fields to
     webform
IV. Optionally relates the created object to a
     Salesforce account or contact
And the others

I. Market Source
  – Pure wizardry

II. Capwiz
  – More wizardry

III. Webform reorder?
  – Brock?
Demo

I. Arcade game high-score app
  – Salesforce objects
      • Contact
      • High-score
  – Drupal entities
      • User
      • High-score webform
Questions




  This is great! How can I get
             started?

Contenu connexe

En vedette

Training Ericsson Acadamy
Training Ericsson Acadamy Training Ericsson Acadamy
Training Ericsson Acadamy Amdei Tessema
 
Springboard 3
Springboard 3Springboard 3
Springboard 3pcave
 
Shetkari restaurant
Shetkari restaurantShetkari restaurant
Shetkari restaurantNikhil Kadu
 
Project on leading laptop brands new
Project on leading laptop brands newProject on leading laptop brands new
Project on leading laptop brands newNikhil Kadu
 
Project on analysis of laptop brands
Project  on  analysis of  laptop  brandsProject  on  analysis of  laptop  brands
Project on analysis of laptop brandsNikhil Kadu
 
New the negotiable_instruments_act__1881_381011348
New the negotiable_instruments_act__1881_381011348New the negotiable_instruments_act__1881_381011348
New the negotiable_instruments_act__1881_381011348Nikhil Kadu
 
Scams in india 2012-2013
Scams in india 2012-2013Scams in india 2012-2013
Scams in india 2012-2013Nikhil Kadu
 
LKS PERTEMUAN I
LKS PERTEMUAN ILKS PERTEMUAN I
LKS PERTEMUAN IDiani M
 

En vedette (12)

Training Ericsson Acadamy
Training Ericsson Acadamy Training Ericsson Acadamy
Training Ericsson Acadamy
 
Tjm 2
Tjm 2Tjm 2
Tjm 2
 
Agency Analysis
Agency AnalysisAgency Analysis
Agency Analysis
 
Springboard 3
Springboard 3Springboard 3
Springboard 3
 
Shetkari restaurant
Shetkari restaurantShetkari restaurant
Shetkari restaurant
 
Hard candy
Hard candyHard candy
Hard candy
 
Project on leading laptop brands new
Project on leading laptop brands newProject on leading laptop brands new
Project on leading laptop brands new
 
Project on analysis of laptop brands
Project  on  analysis of  laptop  brandsProject  on  analysis of  laptop  brands
Project on analysis of laptop brands
 
New the negotiable_instruments_act__1881_381011348
New the negotiable_instruments_act__1881_381011348New the negotiable_instruments_act__1881_381011348
New the negotiable_instruments_act__1881_381011348
 
Scams in india 2012-2013
Scams in india 2012-2013Scams in india 2012-2013
Scams in india 2012-2013
 
Pestle analysis
Pestle analysisPestle analysis
Pestle analysis
 
LKS PERTEMUAN I
LKS PERTEMUAN ILKS PERTEMUAN I
LKS PERTEMUAN I
 

Similaire à Springboard deepdive

Tale of two streaming frameworks- Apace Storm & Apache Flink
Tale of two streaming frameworks- Apace Storm & Apache FlinkTale of two streaming frameworks- Apace Storm & Apache Flink
Tale of two streaming frameworks- Apace Storm & Apache FlinkKarthik Deivasigamani
 
Tale of two streaming frameworks (Karthik D - Walmart)
Tale of two streaming frameworks (Karthik D - Walmart)Tale of two streaming frameworks (Karthik D - Walmart)
Tale of two streaming frameworks (Karthik D - Walmart)KafkaZone
 
Making fitting in RooFit faster
Making fitting in RooFit fasterMaking fitting in RooFit faster
Making fitting in RooFit fasterPatrick Bos
 
Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...
Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...
Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...Liang Chen
 
Storm distributed processing
Storm distributed processingStorm distributed processing
Storm distributed processingducquoc_vn
 
Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009Fabien Potencier
 
Celery: The Distributed Task Queue
Celery: The Distributed Task QueueCelery: The Distributed Task Queue
Celery: The Distributed Task QueueRichard Leland
 
How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...
How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...
How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...Amit Gupta
 
How does the Cloud Foundry Diego Project Run at Scale?
How does the Cloud Foundry Diego Project Run at Scale?How does the Cloud Foundry Diego Project Run at Scale?
How does the Cloud Foundry Diego Project Run at Scale?VMware Tanzu
 
Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Vishnu Kannan
 
Parallel programming
Parallel programmingParallel programming
Parallel programmingSwain Loda
 
Kubernetes intro public - kubernetes meetup 4-21-2015
Kubernetes intro   public - kubernetes meetup 4-21-2015Kubernetes intro   public - kubernetes meetup 4-21-2015
Kubernetes intro public - kubernetes meetup 4-21-2015Rohit Jnagal
 
Kubernetes intro public - kubernetes user group 4-21-2015
Kubernetes intro   public - kubernetes user group 4-21-2015Kubernetes intro   public - kubernetes user group 4-21-2015
Kubernetes intro public - kubernetes user group 4-21-2015reallavalamp
 
A science-gateway workload archive application to the self-healing of workflo...
A science-gateway workload archive application to the self-healing of workflo...A science-gateway workload archive application to the self-healing of workflo...
A science-gateway workload archive application to the self-healing of workflo...Rafael Ferreira da Silva
 
Horizon quantum-integration-grizzly
Horizon quantum-integration-grizzlyHorizon quantum-integration-grizzly
Horizon quantum-integration-grizzlyAkihiro Motoki
 
Horizon Quantum Integration grizzly
Horizon Quantum Integration grizzlyHorizon Quantum Integration grizzly
Horizon Quantum Integration grizzlyAkihiro Motoki
 
Kubernetes Architecture - beyond a black box - Part 2
Kubernetes Architecture - beyond a black box - Part 2Kubernetes Architecture - beyond a black box - Part 2
Kubernetes Architecture - beyond a black box - Part 2Hao H. Zhang
 

Similaire à Springboard deepdive (20)

Tale of two streaming frameworks- Apace Storm & Apache Flink
Tale of two streaming frameworks- Apace Storm & Apache FlinkTale of two streaming frameworks- Apace Storm & Apache Flink
Tale of two streaming frameworks- Apace Storm & Apache Flink
 
Tale of two streaming frameworks (Karthik D - Walmart)
Tale of two streaming frameworks (Karthik D - Walmart)Tale of two streaming frameworks (Karthik D - Walmart)
Tale of two streaming frameworks (Karthik D - Walmart)
 
Making fitting in RooFit faster
Making fitting in RooFit fasterMaking fitting in RooFit faster
Making fitting in RooFit faster
 
Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...
Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...
Us 16-subverting apple-graphics_practical_approaches_to_remotely_gaining_root...
 
Optimized Hive replication
Optimized Hive replicationOptimized Hive replication
Optimized Hive replication
 
Storm distributed processing
Storm distributed processingStorm distributed processing
Storm distributed processing
 
Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009
 
Celery: The Distributed Task Queue
Celery: The Distributed Task QueueCelery: The Distributed Task Queue
Celery: The Distributed Task Queue
 
How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...
How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...
How does the Cloud Foundry Diego Project Run at Scale, and Updates on .NET Su...
 
How does the Cloud Foundry Diego Project Run at Scale?
How does the Cloud Foundry Diego Project Run at Scale?How does the Cloud Foundry Diego Project Run at Scale?
How does the Cloud Foundry Diego Project Run at Scale?
 
Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10
 
Open GeoSocial API
Open GeoSocial APIOpen GeoSocial API
Open GeoSocial API
 
Parallel programming
Parallel programmingParallel programming
Parallel programming
 
Pfm technical-inside
Pfm technical-insidePfm technical-inside
Pfm technical-inside
 
Kubernetes intro public - kubernetes meetup 4-21-2015
Kubernetes intro   public - kubernetes meetup 4-21-2015Kubernetes intro   public - kubernetes meetup 4-21-2015
Kubernetes intro public - kubernetes meetup 4-21-2015
 
Kubernetes intro public - kubernetes user group 4-21-2015
Kubernetes intro   public - kubernetes user group 4-21-2015Kubernetes intro   public - kubernetes user group 4-21-2015
Kubernetes intro public - kubernetes user group 4-21-2015
 
A science-gateway workload archive application to the self-healing of workflo...
A science-gateway workload archive application to the self-healing of workflo...A science-gateway workload archive application to the self-healing of workflo...
A science-gateway workload archive application to the self-healing of workflo...
 
Horizon quantum-integration-grizzly
Horizon quantum-integration-grizzlyHorizon quantum-integration-grizzly
Horizon quantum-integration-grizzly
 
Horizon Quantum Integration grizzly
Horizon Quantum Integration grizzlyHorizon Quantum Integration grizzly
Horizon Quantum Integration grizzly
 
Kubernetes Architecture - beyond a black box - Part 2
Kubernetes Architecture - beyond a black box - Part 2Kubernetes Architecture - beyond a black box - Part 2
Kubernetes Architecture - beyond a black box - Part 2
 

Dernier

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Dernier (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Springboard deepdive

  • 1. deep dive Wednesday, September 8, 2010 Phillip Cave
  • 2. Agenda I. High-level technical overview II. The what and why of Salesforce III. Drupal modules IV. Demo
  • 3. High-level overview I. History – from contrib to Springboard II. Salesforce components – Custom objects, triggers, and fields – Workflow rules and field updates – Reports – Page layouts III. Drupal components – 15 modules (and counting) – Very loosely coupled – Batch processing architecture
  • 4. Salesforce I. Development platform in the cloud II. Objects – Core and custom III. Apex – object oriented programming language IV. Visual Force V. Well documented API VI. Upsert? WTF?
  • 5.
  • 6. Fundraiser I. Only module that doesn’t require SF II. Smoke and mirrors with webform and ubercart – Genetically modified webform
  • 8. Fundraiser I. Supports one-time and recurring donations – Tracks when future donations should be charged – Processing occurs during cron runs – One order id to rule them all
  • 9. Salesforce Management API I. Originally from contrib II. Wrapper for the Salesforce PHP toolkit – SOAP based – Utilizes enterprise WSDL (also a partner WSDL) III. Controls – Fieldmaps (mostly) – Business rules – Connection settings – Object mapping
  • 10. Queue API I. Not very robust at the moment – Currently has 1 function (sf_queue_insert) – Determines if the object: • Is already in the queue • Is in the retry queue • Is a permanent failure • Is on the heap II. Defines the schema for the entire queue system
  • 11. Queue API I. Why queue – Accountability • Can get a peek into what is happening at any given time • Better control over when things get processed – Robust • Salesforce maintenance windows • Ability to take advantage of Batch API – Reporting • Batch history • Queues (current, retry, and permanent failures) II. Downside – Upserts cannot take fieldmap rules into consideration
  • 12. Queue Processor I. Original vision Import Service User Queue Processor Import Service Start Node Fieldmap assign Pre-process Import Service Global Queue Send Donation Post-process Import Service Webform Fieldmaps Salesforce Management API Rules
  • 13. Queue Processor I. Settings – Processing order: Specifies the order in which Drupal entities are processed – Maximum items per cron run: Specifies how many items should be processed per cron run (default 1,000) – Batch size: Maximum number of items to include in a batch (default 200) – Maximum retry attempt: The number of times an entity will be retried before being marked as a permanent failure (default 3) – Email summary: The email addresses that will receive a summary of batches processed after each cron run
  • 14. Queue Processor I. Available triggers – A connection to Salesforce cannot be established – An object fails to export to Salesforce – An object is moved to the retry queue – An object becomes a permanent failure – A SOAP fault occurs
  • 15. Queue Processor yes Lock queue items Get all locked items EOF? Process heap no What yes Fieldmap no Assign fieldmap assigned? happens yes when In heap? cron no runs Add to heap
  • 16. Queue Processor Heap Batch 1 Type: user User upsert Batch 3 Action: upsert Type: node Donation upsert Action upsert Node upsert Sweet! 2 Batch User upsert Type: donation Action: upsert Webformupsert Batch 4 Type: webform Node update Action: upsert User update User update Batch 5 Type: node Donation upsert Action: update User delete Batch 6 Type: user Donation upsert Action: update Webformupsert Batch 7 Type: user Node upsert Action: delete User update Node update
  • 17. Queue Processor I. Hooks – hook_queue_fieldmap_assignment_alter() • Allows a module to assign a fieldmap to an item in the queue before it is placed in the heap – hook_queue_preprocess_batch_alter() • Alter the entire batch – object building happens here – hook_queue_batch_item_alter() • Alter an individual item in the batch (last ditch effort) – hook_queue_postprocess_batch() • Modules can further process the data after the calls to Salesforce – hook_queue_salesforce_info() • Allows a module to expose it’s own fieldmap and dedupe schema
  • 18. Queue Processor I. Reports – Batch history – Currently queued items – Retry queue – Permanent failures
  • 19. Queue Processor I. Batch history – Insight into an individual batch
  • 20. Queue Processor I. Currently queued items – Shows items that are currently in the queue – Will reset after every cron run – queue_report_item_title()
  • 21. Queue Processor I. Retry queue – Where the bad boys go
  • 22. Queue Processor I. Permanent failures – Where the really bad boys go
  • 23. SF User I. Drupal user integration module
  • 24. SF Node I. Node integration module – New!
  • 25. SF Node Import I. Complement to SF Node II. Define criteria for selecting objects in Salesforce III. Can update or create new nodes in Drupal IV. Requires defined fieldmap
  • 26. SF Donation I. Donation integration module
  • 27. SF Webform I. Webform integration module
  • 28. Webform User I. Worst module name in history (thanks Tom) II. Free beer to whoever comes up with a better name III. Adds account and profile fields to webform IV. Optionally relates the created object to a Salesforce account or contact
  • 29. And the others I. Market Source – Pure wizardry II. Capwiz – More wizardry III. Webform reorder? – Brock?
  • 30. Demo I. Arcade game high-score app – Salesforce objects • Contact • High-score – Drupal entities • User • High-score webform
  • 31. Questions This is great! How can I get started?