SlideShare a Scribd company logo
1 of 29
Download to read offline
Filemaker & Drupal
DrupalCamp Florida, 2013
Derek DeRaps




                            derek.deraps@mediacurrent.com
                           drupal.org/user/1571646/contact
Today's Program

1. About me

2. Why FileMaker?

3. Methods for Synchronization

4. What are Web Services?

5. Implementation Overview
About
Derek
About Me.
2008   Graduated Georgia Tech with BS in CS
2010   Introduced to Drupal
2011   Launched first Drupal 6 site
2012   Launched two Drupal 7 sites
2013   Came to work for Mediacurrent

       My first project at Mediacurrent?
        FileMaker & Drupal integration!
The
Project
My first MC Client
● FileMaker back-end: Customers, Orders, Products

● Orders submitted via Webform (D6)

● Then processed manually

● Lots of inefficiency, opportunity for automation

● Goal: Automate communication of commerce
  data between FileMaker and Drupal
What is
FileMaker?
FileMaker
● Powerful, easy-to-use database software

● Made for non-technical users (no coding)

● Easily create forms, reports, labels, etc.

● Drag & drop scripting editor

● Web-publishing engine

● Mobile app
Over 9 zillion people use


FileMaker
Let's get
Synchronized!
Option 1
 FileMaker PUSH     +   Drupal PUSH    =     Simplest Solution




FileMaker Scripts        WSClient module      Happy Devs.
 + HTTP Plugin             + Drupal Rules     Happy Client.
   Push data to              Push data to     Happy Buddha!
"Drupal Services"       "FileMaker RESTfm"
Option 1

                                          Drupal
         Push via Troi URL Plugin
                                          Services




RESTfm                Push via WSClient
Not so fast,
Buckaroo
:(
● FileMaker hooks are quirky: No easy way to
  capture create/delete/update actions.

● Plus, FileMaker scripting = easy-to-learn but a
  headache for developers.

● In the end, too much dependency on client to
  develop and maintain the FileMaker scripts.

● How to get FileMaker changes into Drupal?
Gotta be a
Better Way
Option 2

● FileMaker is NOT developer-friendly

● So let Drupal do the heavy lifting

● No change to Drupal→FM PUSH

● Replace FM→Drupal PUSH with a
  Drupal sync script that PULLs records
  from FileMaker
Option 2

                               Drupal
                               Services




           PULL via WSClient

RESTfm     Push via WSClient
(super secret)
Option Three
What are
Web Services?
RESTful Web Services

●   REST = Representational State Transfer
●   Exposes resources in a standard way for external "consumption"
●   Data sent and retrieved in standard formats: XML, JSON, etc.
●   Follows a standard URL pattern for interaction:
          Action          HTTP method            URI
     CREATE            POST               /resource-type
     RETRIEVE          GET                /resource-type/id
     UPDATE            PUT                /resource-type/id
     DELETE            DELETE             /resource-type/id
     LIST / INDEX      GET                /resource-type
Drupal → FileMaker
    PUSH
PUSH via Rules
React on Events
● Entity Create, Update, or Delete
● Commerce Checkout

Conditions
● Entity is of Bundle
● Field "Do-Not-Sync" = FALSE

Actions
● Create Data Structures to hold entity data
● Execute WSClient operation to send REST request
Drupal ← FileMaker
    PULL
Pulling FM Records
Custom Module
● LIST records and process them into Drupal Entities
● Hint: EntityMetadataWrapper is your friend

Cron Job
● Executes your custom module's sync code
● Ideal frequency? Every few minutes

Preventing Timeout
● Use RESTfm filters and timestamp fields to limit LIST response
● For recordsets < 100, easier to just sync all records
Further Reading

Mediacurrent Blog posts with code examples
  PUSH:      bit.ly/XBBVhc
  PULL:      bit.ly/WRdAqR

Download these slides
  PDF:      bit.ly/14ENET1
What Did You Think?


    Please Evaluate this session at:
fldrupalcamp.org/program/schedule
Questions?
                      derek.deraps@mediacurrent.com
                     drupal.org/user/1571646/contact


Blog Posts Further Reading
 ● mediacurrent.com/blog/featured-recipe-filemaker-and-drupal
 ● mediacurrent.com/blog/9-steps-sync-your-filemaker-data-drupal

More Related Content

What's hot

Developing the unknown
Developing the unknownDeveloping the unknown
Developing the unknown
paul22blue
 
Requirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful ProjectsRequirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful Projects
Acquia
 
BADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best PracticesBADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best Practices
meghsweet
 
Supporting a Drupal site over the Longterm
Supporting a Drupal site over the LongtermSupporting a Drupal site over the Longterm
Supporting a Drupal site over the Longterm
meghsweet
 
Drupal 6 to 7 migration guide
Drupal 6 to 7 migration guideDrupal 6 to 7 migration guide
Drupal 6 to 7 migration guide
Ebizon
 

What's hot (20)

Theming Your Views
Theming Your ViewsTheming Your Views
Theming Your Views
 
Become a Better Developer with Debugging Techniques for Drupal (and more!)
Become a Better Developer with Debugging Techniques for Drupal (and more!)Become a Better Developer with Debugging Techniques for Drupal (and more!)
Become a Better Developer with Debugging Techniques for Drupal (and more!)
 
Developing the unknown
Developing the unknownDeveloping the unknown
Developing the unknown
 
Form Alterations
Form AlterationsForm Alterations
Form Alterations
 
Time's Important - Let Task Management Save Yours
Time's Important - Let Task Management Save YoursTime's Important - Let Task Management Save Yours
Time's Important - Let Task Management Save Yours
 
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
Large drupal site builds   a workshop for sxsw interactive - march 17, 2015Large drupal site builds   a workshop for sxsw interactive - march 17, 2015
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
 
Introduction to Drupal, Wayne Eaker, Nov 11, 09
Introduction to Drupal, Wayne Eaker, Nov 11, 09 Introduction to Drupal, Wayne Eaker, Nov 11, 09
Introduction to Drupal, Wayne Eaker, Nov 11, 09
 
Requirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful ProjectsRequirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful Projects
 
Drupal Migrations in 2018
Drupal Migrations in 2018Drupal Migrations in 2018
Drupal Migrations in 2018
 
Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8
 
BADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best PracticesBADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best Practices
 
Supporting a Drupal site over the Longterm
Supporting a Drupal site over the LongtermSupporting a Drupal site over the Longterm
Supporting a Drupal site over the Longterm
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
 
Build a DNN Module in Minutes
Build a DNN Module in MinutesBuild a DNN Module in Minutes
Build a DNN Module in Minutes
 
Advanced custom fields in Wordpress
Advanced custom fields in WordpressAdvanced custom fields in Wordpress
Advanced custom fields in Wordpress
 
Drupal's competition
Drupal's competitionDrupal's competition
Drupal's competition
 
Drupal 6 to 7 migration guide
Drupal 6 to 7 migration guideDrupal 6 to 7 migration guide
Drupal 6 to 7 migration guide
 
Choosing the "right" CMS
Choosing the "right" CMSChoosing the "right" CMS
Choosing the "right" CMS
 
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best PracticesCaching Strategies for Scaling Drupal: Common Missteps vs Best Practices
Caching Strategies for Scaling Drupal: Common Missteps vs Best Practices
 
What are the advantages and disadvantages of wordpress
What are the advantages and disadvantages of wordpressWhat are the advantages and disadvantages of wordpress
What are the advantages and disadvantages of wordpress
 

Similar to FileMaker-Drupal Synchronization

A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
Phase2
 
DrupalCampSFL OpenPublic Overview
DrupalCampSFL OpenPublic OverviewDrupalCampSFL OpenPublic Overview
DrupalCampSFL OpenPublic Overview
John Studdard
 
Build Custom Surveys and Forms Natively in Drupal Gardens
Build Custom Surveys and Forms Natively in Drupal GardensBuild Custom Surveys and Forms Natively in Drupal Gardens
Build Custom Surveys and Forms Natively in Drupal Gardens
Acquia
 

Similar to FileMaker-Drupal Synchronization (20)

A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
A FUTURE-FOCUSED DIGITAL PLATFORM WITH DRUPAL 8
 
Drupal Performance : DrupalCamp North
Drupal Performance : DrupalCamp NorthDrupal Performance : DrupalCamp North
Drupal Performance : DrupalCamp North
 
DrupalCon Chicago 2011 ReportBack (11/03/30 - G. Bedford)
DrupalCon Chicago 2011 ReportBack (11/03/30 - G. Bedford)DrupalCon Chicago 2011 ReportBack (11/03/30 - G. Bedford)
DrupalCon Chicago 2011 ReportBack (11/03/30 - G. Bedford)
 
PHPNW Drupal as a Framework
PHPNW Drupal as a FrameworkPHPNW Drupal as a Framework
PHPNW Drupal as a Framework
 
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
[HKDUG] #20151017 - BarCamp 2015 - Drupal 8 is Coming! Are You Ready?
 
Drupal for Higher Education and Virtual Learning
Drupal for Higher Education and Virtual LearningDrupal for Higher Education and Virtual Learning
Drupal for Higher Education and Virtual Learning
 
Migrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the RisksMigrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
Migrating to Drupal 8: How to Migrate Your Content and Minimize the Risks
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
With Drupal Your Website is an API
With Drupal Your Website is an APIWith Drupal Your Website is an API
With Drupal Your Website is an API
 
DrupalCampSFL OpenPublic Overview
DrupalCampSFL OpenPublic OverviewDrupalCampSFL OpenPublic Overview
DrupalCampSFL OpenPublic Overview
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
Getting Ready for Ligtning Process Builder
Getting Ready for Ligtning Process BuilderGetting Ready for Ligtning Process Builder
Getting Ready for Ligtning Process Builder
 
Drupalcampchicago2010.rachel.datamigration.
Drupalcampchicago2010.rachel.datamigration.Drupalcampchicago2010.rachel.datamigration.
Drupalcampchicago2010.rachel.datamigration.
 
Wordpress as a framework
Wordpress as a frameworkWordpress as a framework
Wordpress as a framework
 
Drupal in-depth
Drupal in-depthDrupal in-depth
Drupal in-depth
 
Build Custom Surveys and Forms Natively in Drupal Gardens
Build Custom Surveys and Forms Natively in Drupal GardensBuild Custom Surveys and Forms Natively in Drupal Gardens
Build Custom Surveys and Forms Natively in Drupal Gardens
 
Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015
Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015
Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and more
 

More from Mediacurrent

More from Mediacurrent (20)

Penn State News: Pivoting to Decoupled Drupal with Gatsby
Penn State News: Pivoting to Decoupled Drupal with GatsbyPenn State News: Pivoting to Decoupled Drupal with Gatsby
Penn State News: Pivoting to Decoupled Drupal with Gatsby
 
Evolving How We Measure Digital Success in Higher Ed
Evolving How We Measure Digital Success in Higher EdEvolving How We Measure Digital Success in Higher Ed
Evolving How We Measure Digital Success in Higher Ed
 
Penn State scales static Drupal to new heights
Penn State scales static Drupal to new heightsPenn State scales static Drupal to new heights
Penn State scales static Drupal to new heights
 
Delivering Meaningful Digital Experiences in Higher Ed
Delivering Meaningful Digital Experiences in Higher EdDelivering Meaningful Digital Experiences in Higher Ed
Delivering Meaningful Digital Experiences in Higher Ed
 
Content Strategy: Building Connections with Your Audience
Content Strategy: Building Connections with Your AudienceContent Strategy: Building Connections with Your Audience
Content Strategy: Building Connections with Your Audience
 
Decoupled Drupal and Gatsby in the Real World
Decoupled Drupal and Gatsby in the Real WorldDecoupled Drupal and Gatsby in the Real World
Decoupled Drupal and Gatsby in the Real World
 
A Better Way to Build and Manage Sites with Rain for Drupal 9
A Better Way to Build and Manage Sites with Rain for Drupal 9A Better Way to Build and Manage Sites with Rain for Drupal 9
A Better Way to Build and Manage Sites with Rain for Drupal 9
 
Drupal Security: What You Need to Know
Drupal Security: What You Need to KnowDrupal Security: What You Need to Know
Drupal Security: What You Need to Know
 
Leveraging Design Systems to Streamline Web Projects
Leveraging Design Systems to Streamline Web ProjectsLeveraging Design Systems to Streamline Web Projects
Leveraging Design Systems to Streamline Web Projects
 
Reimagining Your Higher Ed Web Strategy
Reimagining Your Higher Ed Web StrategyReimagining Your Higher Ed Web Strategy
Reimagining Your Higher Ed Web Strategy
 
How to Digitally Transform Higher Ed with Drupal
How to Digitally Transform Higher Ed with DrupalHow to Digitally Transform Higher Ed with Drupal
How to Digitally Transform Higher Ed with Drupal
 
Is my website accessible? Common mistakes (and how to fix them)
Is my website accessible? Common mistakes (and how to fix them)Is my website accessible? Common mistakes (and how to fix them)
Is my website accessible? Common mistakes (and how to fix them)
 
Managing Images In Large Scale Drupal 8 & 9 Websites
Managing Images In Large Scale Drupal 8 & 9 WebsitesManaging Images In Large Scale Drupal 8 & 9 Websites
Managing Images In Large Scale Drupal 8 & 9 Websites
 
Paragraphs v Layout Builder - The Final Showdown
Paragraphs v Layout Builder - The Final ShowdownParagraphs v Layout Builder - The Final Showdown
Paragraphs v Layout Builder - The Final Showdown
 
MagMutual.com: On the JAMStack with Gatsby and Drupal 8
 MagMutual.com: On the JAMStack with Gatsby and Drupal 8 MagMutual.com: On the JAMStack with Gatsby and Drupal 8
MagMutual.com: On the JAMStack with Gatsby and Drupal 8
 
Creating an Organizational Culture of Giving Back to Drupal
Creating an Organizational Culture of Giving Back to DrupalCreating an Organizational Culture of Giving Back to Drupal
Creating an Organizational Culture of Giving Back to Drupal
 
Level Up Your Team: Front-End Development Best Practices
Level Up Your Team: Front-End Development Best PracticesLevel Up Your Team: Front-End Development Best Practices
Level Up Your Team: Front-End Development Best Practices
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9
 
How to Prove Marketing ROI: Overcoming Digital Marketing Challenges
How to Prove Marketing ROI: Overcoming Digital Marketing ChallengesHow to Prove Marketing ROI: Overcoming Digital Marketing Challenges
How to Prove Marketing ROI: Overcoming Digital Marketing Challenges
 
Prepare Your Drupal 9 Action Plan
Prepare Your Drupal 9 Action Plan Prepare Your Drupal 9 Action Plan
Prepare Your Drupal 9 Action Plan
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
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
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

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 🐘
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

FileMaker-Drupal Synchronization

  • 1. Filemaker & Drupal DrupalCamp Florida, 2013 Derek DeRaps derek.deraps@mediacurrent.com drupal.org/user/1571646/contact
  • 2. Today's Program 1. About me 2. Why FileMaker? 3. Methods for Synchronization 4. What are Web Services? 5. Implementation Overview
  • 4. About Me. 2008 Graduated Georgia Tech with BS in CS 2010 Introduced to Drupal 2011 Launched first Drupal 6 site 2012 Launched two Drupal 7 sites 2013 Came to work for Mediacurrent My first project at Mediacurrent? FileMaker & Drupal integration!
  • 6. My first MC Client ● FileMaker back-end: Customers, Orders, Products ● Orders submitted via Webform (D6) ● Then processed manually ● Lots of inefficiency, opportunity for automation ● Goal: Automate communication of commerce data between FileMaker and Drupal
  • 8. FileMaker ● Powerful, easy-to-use database software ● Made for non-technical users (no coding) ● Easily create forms, reports, labels, etc. ● Drag & drop scripting editor ● Web-publishing engine ● Mobile app
  • 9.
  • 10. Over 9 zillion people use FileMaker
  • 12. Option 1 FileMaker PUSH + Drupal PUSH = Simplest Solution FileMaker Scripts WSClient module Happy Devs. + HTTP Plugin + Drupal Rules Happy Client. Push data to Push data to Happy Buddha! "Drupal Services" "FileMaker RESTfm"
  • 13. Option 1 Drupal Push via Troi URL Plugin Services RESTfm Push via WSClient
  • 15. :( ● FileMaker hooks are quirky: No easy way to capture create/delete/update actions. ● Plus, FileMaker scripting = easy-to-learn but a headache for developers. ● In the end, too much dependency on client to develop and maintain the FileMaker scripts. ● How to get FileMaker changes into Drupal?
  • 17. Option 2 ● FileMaker is NOT developer-friendly ● So let Drupal do the heavy lifting ● No change to Drupal→FM PUSH ● Replace FM→Drupal PUSH with a Drupal sync script that PULLs records from FileMaker
  • 18. Option 2 Drupal Services PULL via WSClient RESTfm Push via WSClient
  • 20.
  • 22. RESTful Web Services ● REST = Representational State Transfer ● Exposes resources in a standard way for external "consumption" ● Data sent and retrieved in standard formats: XML, JSON, etc. ● Follows a standard URL pattern for interaction: Action HTTP method URI CREATE POST /resource-type RETRIEVE GET /resource-type/id UPDATE PUT /resource-type/id DELETE DELETE /resource-type/id LIST / INDEX GET /resource-type
  • 24. PUSH via Rules React on Events ● Entity Create, Update, or Delete ● Commerce Checkout Conditions ● Entity is of Bundle ● Field "Do-Not-Sync" = FALSE Actions ● Create Data Structures to hold entity data ● Execute WSClient operation to send REST request
  • 26. Pulling FM Records Custom Module ● LIST records and process them into Drupal Entities ● Hint: EntityMetadataWrapper is your friend Cron Job ● Executes your custom module's sync code ● Ideal frequency? Every few minutes Preventing Timeout ● Use RESTfm filters and timestamp fields to limit LIST response ● For recordsets < 100, easier to just sync all records
  • 27. Further Reading Mediacurrent Blog posts with code examples PUSH: bit.ly/XBBVhc PULL: bit.ly/WRdAqR Download these slides PDF: bit.ly/14ENET1
  • 28. What Did You Think? Please Evaluate this session at: fldrupalcamp.org/program/schedule
  • 29. Questions? derek.deraps@mediacurrent.com drupal.org/user/1571646/contact Blog Posts Further Reading ● mediacurrent.com/blog/featured-recipe-filemaker-and-drupal ● mediacurrent.com/blog/9-steps-sync-your-filemaker-data-drupal