12

I built a solution for a customer and I want to pull the ERD from the Salesforce instance and have the ability to edit it.

I know there are a few tools and the Schema builder in Salesforce but none of them give you good export functionality that then allows you to edit afterwards in Visio, OMNI or online tool.

Does anyone know a good tool to extract the ERD that then allows you to edit it afterwards?

7 Answers 7

3

You can use products like DBAmp or Informatica Replicator which will create a SQL Database based on your Salesforce schema. Then you can use Visio to read the SQL Server database schema. I know that DBAmp, might now be called ForceAmp, used to have documentation to do just this sort of thing.

1
  • 1
    I have used both DBAmp with SQL Server ($) and Talend (Free) w/ MySQL Workbench to do this. The key is you need to download your Schema to a local DB. Once you have it in a local DB you can use many different tools to work with the ERD Diagram. Schema Builder in SFDC is great, but still in its infancy. Hopefully more features get added to it as it matures so we don't have to do these work arounds. Aug 16, 2012 at 19:25
1

Got to thinking, everything in salesforce is web based. So looking at the calls to salesforce

https://cs9.salesforce.com/_ui/platform/schema/ui/schemabuilder/SchemaBuilderServlet?timeStamp=1345444993377&sblid=0GHK00000008PC8&action=LoadInitial&_CONFIRMATIONTOKEN=chxemqyV1L_hA2vmW90h89AfhduejVo7EEdyfLmsfucsYrPrN4gT5bYwyaAC6xMxxbCUIVeZcs4orflB2UJiD5rOekDHR5hBviT8Y4uvjX.j77zVxdWBE4EeH6mKRvzUox3KRoom4oU00VHw6k50_yid9trktz70M4xaXlua8qBKu98qPwELjmYMwEQZK14jM58IlQ==&retURL=/_ui/platform/schema/ui/schemabuilder/SchemaBuilderUi

sure enough, the above call gets you the data in return. Conceivably you could create a parser that would render this information into something useful.

    objs: {User:{flds:{AboutMe:{dt:X, id:AboutMe, d:[],…}, IsActive:{dt:B, id:IsActive, d:[],…},…},…},…}
    01IK00000000UwX: {flds:{Name:{dt:V, id:Name, d:[],…}, CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:9987,…}
    01Id0000000eA7o: {flds:{,…}, to:13991, sblitemid:0GIK00000008ewN,…}
    01Id0000000eA7p: {flds:{,…}, to:13488, sblitemid:0GIK00000008ewO, rflds:{,…}, n:FCMS__CMSProfile__c, l:CMSProfile,…}
    01Id0000000eA7q: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…}, Name:{dt:V, id:Name, d:[],…},…}, to:9987,…}
    01Id0000000eA7s: {flds:{,…}, to:9987, sblitemid:0GIK00000008ewQ,…}
    01Id0000000eA7t: {flds:{,…}, to:14696, sblitemid:0GIK00000008ewR, rflds:{,…}, n:FCMS__Menu__c, l:Menu, afl:true,…}
    01Id0000000eA7u: {flds:{,…}, to:14197, sblitemid:0GIK00000008ewS,…}
    01Id0000000eA7v: {flds:{,…}, to:13734, sblitemid:0GIK00000008ewT, rflds:{,…}, n:FCMS__Permission__c, l:Permission,…}
    01Id0000000eA7w: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:13319, sblitemid:0GIK00000008ewU,…}
    01Id0000000eEb3: {flds:{,…}, to:15490, sblitemid:0GIK00000008ewW,…}
    01Id0000000eEb4: {flds:{,…}, to:16304, sblitemid:0GIK00000008ewX,…}
    01Id0000000eEb5: {flds:{,…}, to:14477, sblitemid:0GIK00000008ewY,…}
    01Id0000000eEb6: {flds:{,…}, to:16080, sblitemid:0GIK00000008ewZ, rflds:{,…}, n:Project_Group__c, l:Project Group,…}
    01Id0000000eEb7: {flds:{,…}, to:14451, sblitemid:0GIK00000008ewa, rflds:{,…}, n:Project_Owner__c, l:Project Assignment,…}
    01Id0000000eEb8: {flds:{,…}, to:15336, sblitemid:0GIK00000008ewb, rflds:{,…}, n:Project__c, l:Project, afl:true,…}
    01Id0000000eEb9: {flds:{,…}, to:14918, sblitemid:0GIK00000008ewc,…}
    01Id0000000eEbA: {flds:{,…}, to:14451, sblitemid:0GIK00000008ewd, rflds:{,…}, n:Timesheet_Period__c, l:Timesheet Period,…}
    01Id0000000eEbB: {flds:{,…}, to:14755, sblitemid:0GIK00000008ewe, rflds:{,…}, n:Timesheet_User__c, l:Timesheet User,…}
    01Id0000000ey1P: {flds:{,…}, to:13891, sblitemid:0GIK00000008ewV, rflds:{,…}, n:Schedule_Availability__c,…}
    01Id0000000f0aI: {flds:{,…}, to:13570, sblitemid:0GIK00000008ewf, rflds:{,…}, n:Stakeholder__c, l:Stakeholder,…}
    01Id0000000fBlF: {flds:{,…}, to:9987, sblitemid:0GIK00000008ewg,…}
    01Id0000000fWs2: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:11484, sblitemid:0GIK00000008ewh,…}
    01Id0000000fWzT: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…}, Name:{dt:S, id:Name, d:[],…},…}, to:12432,…}
    01Id0000000foeg: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…}, Name:{dt:S, id:Name, d:[],…},…}, to:12073,…}
    01Id0000000fwbB: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:13024, sblitemid:0GIK00000008ewk,…}
    01Id0000000fzeA: {flds:{Name:{dt:S, id:Name, d:[],…}, CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:12081,…}
    01Id00000011jId: {flds:{,…}, to:9987, sblitemid:0GIK00000008ewL,…}
    01Id00000011jIe: {,…}
    01Id00000011jIf: {flds:{Name:{dt:V, id:Name, d:[],…}, CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:9987,…}
    01Id00000011jIg: {flds:{,…}, to:13482, sblitemid:0GIK00000008ewA, rflds:{,…}, n:AVTRRT__ETCObject__c, l:ETCObject,…}
    01Id00000011jIh: {,…}
    01Id00000011jIi: {flds:{,…}, to:13342, sblitemid:0GIK00000008ewC, rflds:{,…}, n:AVTRRT__Employment_History__c,…}
    01Id00000011jIj: {flds:{,…}, to:12037, sblitemid:0GIK00000008ewD, rflds:{,…}, n:AVTRRT__Expense__c, l:Expense, afl:true,…}
    01Id00000011jIk: {flds:{,…}, to:12268, sblitemid:0GIK00000008ewE, rflds:{,…}, n:AVTRRT__Interview__c, l:Interview,…}
    01Id00000011jIl: {flds:{,…}, to:11471, sblitemid:0GIK00000008ewF, rflds:{,…}, n:AVTRRT__Job_Applicant__c,…}
    01Id00000011jIm: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:9987, sblitemid:0GIK00000008ewG,…}
    01Id00000011jIn: {flds:{,…}, to:11135, sblitemid:0GIK00000008ewH, rflds:{,…}, n:AVTRRT__Job__c, l:Job, afl:false,…}
    01Id00000011jIo: {flds:{,…}, to:11830, sblitemid:0GIK00000008ewI, rflds:{,…}, n:AVTRRT__Placement__c, l:Placement,…}
    01Id00000011jIp: {flds:{,…}, to:13681, sblitemid:0GIK00000008ewJ, rflds:{,…}, n:AVTRRT__References__c, l:Reference,…}
    01Id00000011jIq: {flds:{,…}, to:10488, sblitemid:0GIK00000008ewK,…}
    01Id00000011jIs: {flds:{,…}, to:11400, sblitemid:0GIK00000008ew2,…}
    01Id00000011jIt: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:10815, sblitemid:0GIK00000008ew3,…}
    01Id00000011jIu: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…}, Name:{dt:S, id:Name, d:[],…},…}, to:10635,…}
    01Id00000011jIv: {,…}
    01Id00000011jIw: {,…}
    01Id00000011jIx: {,…}
    01Id00000019OOD: {flds:{,…}, to:11995, sblitemid:0GIK00000008ewm,…}
    01Id00000019P8C: {flds:{Name:{dt:S, id:Name, d:[],…},…}, to:12592, sblitemid:0GIK00000008ewn,…}
    Account: {flds:{Name:{dt:m, id:Name, d:[],…}, AccountNumber:{dt:S, id:AccountNumber, d:[],…},…}, to:12769,…}
    Activity: {flds:{,…}, sblitemid:0GIK00000008ewo, rflds:{}, n:Activity, l:Activity, afl:true, h:true, id:Activity,…}
    Asset: {flds:{Account:{dt:Y, id:Account, d:[Account],…}, Name:{dt:S, id:Name, d:[],…},…}, to:13175,…}
    Campaign: {flds:{IsActive:{dt:B, id:IsActive, d:[],…}, ActualCost:{dt:C, id:ActualCost, d:[],…},…}, to:11982,…}
    CampaignMember: {flds:{Campaign:{dt:Y, id:Campaign, d:[Campaign],…}, City:{dt:S, id:City, d:[],…},…}, to:12699,…}
    Case: {flds:{Account:{dt:Y, id:Account, d:[Account],…}, Asset:{dt:Y, id:Asset, d:[Asset],…},…}, to:13151,…}
    Contact: {flds:{,…}, to:13129, sblitemid:0GIK00000008evp, rflds:{Account:{dt:Y, id:Account, d:[Account],…},…},…}
    Contract: {flds:{Account:{dt:Y, id:Account, d:[Account],…}, ActivatedBy:{dt:Y, id:ActivatedBy, d:[User],…},…},…}
    Event: {,…}
    Idea: {flds:{Categories:{dt:Q, id:Categories, d:[],…}, Body:{dt:z, id:Body, d:[],…},…}, to:9987,…}
    Lead: {flds:{Address:{dt:A, id:Address, d:[],…}, AnnualRevenue:{dt:C, id:AnnualRevenue, d:[],…},…}, to:11722,…}
    Opportunity: {flds:{Account:{dt:Y, id:Account, d:[Account],…}, Amount:{dt:C, id:Amount, d:[],…},…}, to:11155,…}
    OpportunityLineItem: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…}, ServiceDate:{dt:D, id:ServiceDate, d:[],…},…},…}
    Product2: {flds:{IsActive:{dt:B, id:IsActive, d:[],…}, CreatedBy:{dt:Y, id:CreatedBy, d:[User],…},…}, to:11852,…}
    Quote: {,…}
    QuoteLineItem: {flds:{CreatedBy:{dt:Y, id:CreatedBy, d:[User],…}, ServiceDate:{dt:D, id:ServiceDate, d:[],…},…},…}
    Solution: {,…}
    Task: {flds:{Owner:{dt:Y, id:Owner, d:[User, Calendar],…},…}, sblitemid:0GIK00000008evy,…}
    User: {flds:{AboutMe:{dt:X, id:AboutMe, d:[],…}, IsActive:{dt:B, id:IsActive, d:[],…},…},…}
2
  • 3
    Yes, you could conceivably create such a parser, but this is not a published interface. It is subject to all sorts of changes with each release. Caveat coder!
    – metadaddy
    Aug 20, 2012 at 16:25
  • looks published to me ;) j/k
    – ebt
    Aug 20, 2012 at 16:36
1

Schema Spy: http://schemaspy.sourceforge.net/

Can be used on salesforce: http://blog.jeffdouglas.com/2010/05/12/running-the-force-metadata-jdbc-driver-for-schemaspy/

With the option of generating both HTML pages and Graphvis images along with an XML representation of the schema.

1

There is an app on the appexchange called ERD force, you may want to try that. https://sites.secure.force.com/appexchange/listingDetail?listingId=a0N3000000174P9EAI

Also, you may want to refer the below http://code.google.com/p/force-metadata-jdbc-driver/

1
  • "ERD force" is more of an object visualizer than an ERD - it does not display object relationships at all.
    – zachelrath
    Jan 15, 2013 at 11:37
1

Safyr is a tool from Silwood Technology that pulls metadata out of any Force based environment and allow data models to be built in a range of data modelling tools like ERwin and ER/Studio. It also has its own built-in ERD capability.

1

I built http://stevebuik.github.io/GraphVizForce for this although you will need to learn the Graphviz syntax if you want to edit it after it has been generated.

0

To get the ER Diagram directly from your Salesforce org you may want to try AbstraLinx. The app is also available on AppExchange. You can also edit the diagrams and create other sub-diagrams, customs objects, custom metadata, requirements, and relationships. It is desktop software, only available for Windows.

PS: I work for the company that developed the tool.

1
  • 2
    In this answer you stated your affiliation with the company that developed this product. Thank you for that, but please also do the same here. People may view this answer independently from the the other one, and "you must disclose your affiliation in your answers.". From the same help article, all of your answers should not be about a product, and so far your only 2 answers are. So while this product might help, please also give some helpful non-product-related answers on SFSE.
    – Moonpie
    Oct 26, 2022 at 14:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .