Unleash Your Potential - Namagunga Girls Coding Club
MongoDB Topazsocial CRM
1. MongoDB Schema Design Concepts
for a Social CRM System
Ashwin Mangale
CTO, Vector Brook
ashwin.mangale@vectorbrook.com
Presented at MongoDB Pune, Oct. 21, 2012
2. Talk Outline
● MongoDB Schema Basics Recap
● Topaz Social CRM Overview
● Data Model Overview
● Interactions
● Service Cases
● Forums
● Content Marketing Pages
● Conclusions
3. MongoDB Schema Basics Recap
● Document: JSON object (1 or more name:value
pairs)
● Name is a string, value can be of foll types
(dependent on driver/language): String,
Symbol, Integer, Float, Boolean, Date, Array,
ObjectId, Document
● A collection consists of one or more documents
● Loosely: Document ~ row and collection ~
table in a relational system
4. MongoDB Schema Basics (Contd.)
● Relational algebra defines concept of a join
● No concept of join with documents and collections
● Relations between collections come down to a decision between
link vs embed
● Embedding allows atomic updates of outer and embedded entity
● 1-many relations
● Array
● Embedded document
● Links between collections
● Many-many relations
● Links between collections
5. Topaz Social CRM Overview
● Open Source
● https://github.com/vectorbrook/TopazSocial
● GNU Affero General Public License (AGPL)
● Technology Stack
● Ruby/Rails 3.2
● MongoDB
● Twitter Bootstrap
● Philosophy
● Simplicity: Keep code simple and gem dependencies to
minimal
● Lightweight: Focus on common use cases
6. Topaz Social CRM Overview
(Contd.)
● CRM Evolution
● From systems of record to systems of engagement
● Earlier, focus of the CRM system was on storing data about
customers, service cases, leads, opportunities
● With the growth of social media, focus is shifting to capturing
information about customer engagement
● Concept of Interaction
● Captures each interaction with a prospect/customer
● Focus of the system is on the interactions
● Interactions happen within the context of well-known CRM entities
● Allows for a better understanding of customer needs, leading to a
overall better customer experience
8. Topaz Social Data Model Overview
(Contd.)
● Customer details: cust_accounts, cust_sites,
cust_contacts
● User details: users (with roles)
● Customer engagement details: interactions
● Service cases: service_cases, service_case_logs
● Forums: forum_categories, forums, forum_topics
● Content marketing: cm_page_categories, cm_pages
9. Interactions
● Interactions are central to the system
● Each interaction/engagement with the customer/prospect
is recorded within the appropriate context
● Interactions are stored in a separate collection, and are
linked from the contextual entity (eg. forum_topics and
service_cases)
● Decision to store interactions in their own collection,
versus embedding in the contextual entity: primarily to
allow for queries to be run directly on interactions, and not
have to always access through the contextual entity
10. Service Cases
● service_case is used to store information about
customer problems/questions etc.
● Interactions with the customer are linked to the
service_case entity
● service_case_log entity stores updates made by
employees as they work on the case and are not
visible to the customer
● The service_case_logs entity is embedded in the
service_cases entity, since the logs are always
accessed from the service_case, and never directly.
12. Service Case Interaction JSON
● { "_id" :
ObjectId("5082dcb8def2c908fa000081"),
"context_id" :
ObjectId("5082dc72def2c908fa000060"),
"context" : "ServiceCase",
"body" : "Cust wants status update",
"user_id" :
ObjectId("5082d88cdef2c908f6000001")
}
13. Forums
● forum_categories and forums are each stored
as separate collections, with appropriate links
● forum_topics are embedded within forums
● Interaction entity used to store the actual posts
in the forums by users
● Each interaction is within the context of a
forum_topic, and is linked to the topic
16. Content Marketing Pages
● To facilitate inbound marketing, the system allows creation of
content marketing pages
● The cm_pages are organized within cm_page_categories,
each of which are separate collections
● cm_page_categories can be nested (tree)
● Links between cm_pages and cm_page_categories can be
established
● Possible to change category names, and category hierarchy
efficiently, without impacting the cm_pages
● Interactions can be created in the context of a cm_page
17. Customer Details
● cust_accounts
● cust_sites
● cust_contacts
● Decision to embed cust_sites and
cust_contacts within the cust_account
document
19. Summary
● We describe how a MongoDB based document
is used to design and implement a Social CRM
system
● Capturing customer interactions efficiently is
central to the design of Social CRM systems
● The interactions happen within the context of
other CRM entities such as service cases,
forums, and content marketing pages
● Access patterns are the key drivers to design
decisions of whether to embed or link