Lawrence Newcombe, who joins to talk about his app FormulaShare, is the Lead Technical Architect at Giveclarity.org and Salesforce CTA.
Main Points
- Lawrence’s AppExchange app – FormulaShare
- Where was the app idea from
- Salesforce out-of-box sharing options
- What FormulaShare App does
- The tasks of building an app
- The biggest Challenge Lawrence had in building the app
- Who can build an app
Links
- Lawrence’s LinkedIn
- Lawrence’s Twitter
- FormulaShare App in AppExchange
- Lawrence’s SSO episode
- Pat McClellan’s SMS App Journey Episode
- Lawrence’s other episode – SSO
Video Teaser
Contact Me
If you enjoy this podcast, please reach me out to let me know your thoughts or simply say Hello. My (Xi’s) contact info:
Take care, until next time :)!
Transcript
AI-generated, unedited.
[00:13] Hey everybody! This is Xi Xiao. This is yet a new episode of Salesforce Way podcast. Today I'm sitting with a returning guest. His name is Lawrence Newcombe. Hello, Lawrence. Hello, Xi. Great to be with you again. It was like two or three episodes ago we discussed about SSL in Salesforce. Yes, yes, that's right. Yeah, great, great to be back. Yeah, you know, I heard that you were building an app. Then I instantly think, yeah, we should discuss about this. Oh no, it's a pleasure. Yeah, really fun, really interesting. So, so is the app already in App Exchange live, or is it still in development? No, it's it's live live on the App Exchange. So so the app's app's called Formula Share. So it's been available on the App Exchange for three or four years now. So we've we've kind of had a had a presence for a while, but had quite a significant significant release this year. Sort of refresh of of branding, quite a lot of new features coming in. And starting to offer it through a through a tiered model, so we have different different pricing tiers from sort of free up to unlimited pricing. Okay, I thought it's a new app and it's been there for three, four years.
[01:31] Well, it's it's evolved quite a bit in that time, but yeah. Okay, is it now you put a lot of more effort to upgrade the app or? Yeah, the last so probably the last two years or so. There's been a a lot of yeah. That that's probably where the bulk of the effort has kind of come. So. It has been available sort of prior to that. And sorry, Lawrence, I I want you to introduce yourself. I was like taking away from the app thing. Yeah, please, please go ahead. Thank you, thanks you. So so so yeah, I'm Lawrence Newcombe. So I work for an organisation called GiveClarity.org. So we're a Salesforce partner. We work exclusively with non-profits and typically on on fundraising projects involving. Well, Salesforce, Salesforce core platform, but then also typically other other sort of platforms and tools that go around that. So, sort of marketing, kind of data analytics platforms, yeah. For and generally, so we work with nonprofits of all sizes, but I work as a technical architect. So my Involvement is sort of generally with with the bigger bigger organisations with sort of more more complicated setups and yeah as as he mentioned I also run a company together with my wife we we publish our app through through that company so we we operate as a as an ISV. Okay, so you have your full time job, and this app is built by yourself under your own company. That's right. Yes. Yeah.
[03:01] But do you have the experience of building the AppExchange app from your current job, or did you learn it by yourself in a spare time? Good question. I guess kind of a combination is probably the right answer. So, so it's an app that sort of helps with specific kinds of quite challenging sharing use cases. So, sort of sales or sharing model, and I guess the i had the idea a very long time ago actually, while I was working with. An organisation that had challenges around how they how they managed sharing, and they had quite complex sharing requirements around how records needed to be to be shared with appropriate users from from those countries. So at the time, the way that we tackled that was effectively by building quite a sophisticated framework that that uses Apex sharing and assesses for each of the Shared objects where those kind of need to be shared too. So it's sort of around that time that I was kind of thinking maybe some of this should be. Done in a sort of a more reusable, kind of more rules based sort of way, and but it wasn't actually later until I was working with a different organisation, a large national nonprofit organisation in in the UK, and they they had sort of different sort of requirement, but effectively a very similar. Very similar solution was needed. So, so in their case, they work with a large network
[04:31] of partners across across the UK, and each of these partners have a specific remit, a geographical remit, and those partners are. Accessing Salesforce and sort of need to need to have the right record shared with them, and we were kind of having very similar conversations around how do we how do we manage this? How can we do this with what's available out the box of Salesforce? Is it possible? If it isn't, how do we? Yeah, how do we sort of look to look to do this with customization? So it was it was sort of the the combination of kind of seeing both of those scenarios and sort of realizing actually, yeah, if there was something reusable, that would really help a lot with with with those kinds of circumstances, perhaps for other customers as well. So you build the app. You also have the full-time job at the same time, eight hours. So, do you see any conflict there? Would is your company really supporting you to build the app? Yeah, so I think I was very lucky in that respect, actually, in that the the environment that I had at the time that I was initially exploring this idea and and and what what eventually I suppose became the the framework and then led to the app that the company that I was with or the organisation I was with at the time, NCS Trust, were. Extremely supportive, and and my my manager particularly, I think, just really sort of understood that that it was it was an opportunity really for the. for for for the sector and for and and for for the community really
[06:02] to provide, to to use the opportunity to to take our work and make something that we could we could make available more widely. So so initially the app was or the or the app is based on on an engine that's open source that kept that came out of that work. And yeah, as I say, my manager at the time kind of really got that, and he got that it was something I was really interested in. So it was relatively easy for me at the time to to carve out part of. Part of the the the work that went into the app from from my my working time for for that organisation, so so that that that made things that that that really really helped me in in in that process. My my other colleagues at that organisation as well were also very supportive, really sort of input into the design and really made sure it's it's really fit for purpose for for a broader use as well. It's always good to hear when the employer supports the employee to pursue the things that they are passionate about. Yeah, synergy. It's more about love and mutual. Yeah, and and also to to say my my current employer as well. I've been really really lucky that they've been very understanding and particularly as as we made the transition towards being you know really. Moving from an open source project and and a free app to to an enterprise solution. If I were in your shoes, I couldn't really spot
[07:32] out this requirement because the sharing and the visibility. That certificate is one of the most difficult certificates in Salesforce I know. And I passed that certificate, but I never had the chance to practice. You know the details of that, like how to do the Apex sharing, how to really configure the work to meet the complex sharing requirement. And the most of the customers in Finland that I worked with, they don't have that strong requirement to you know restrict and customize the the sharing. Most of them just have the. Either the object is private or open public to everybody, so not too much into the Apex sharing those those kind of. Super detailed, granular sharings. Yeah, yeah, and that's that's definitely not uncommon. And yeah, number of orgs that I've worked in, it's a similar, yeah, similar, similar approach. Yeah, perhaps where it's a single team using the org, even if it's quite a large team, there might not be a need necessarily to segment sharing. Depends, of course, on the kinds of data that are being managed in the org as well. So yeah, so certainly not uncommon, and yeah, I think sort of certain certain sectors and industries, it's it it comes up a lot more than others. So okay, so the Formula Share is the name of the app, right? That's right. Yes, I'll put it in the show notes for our listeners to check. And what you did in this app is that you can extend more than the Apex sharing. So
[09:02] the app kind of works effectively. It applies Apex sharing. On behalf of of the org, so it kind of builds on top of Apex sharing in in a sense, but it sort of abstracts, or the the the aim really is to sort of abstract the things which are complicated about about needing to share in those sort of quite quite kind of bespoke ways. So I mean, it might maybe it's is it helpful to sort of to touch a little on what's generally possible out the box? Because go ahead, please, please. So yeah, so to sort of see see the value of the app, it's it's yeah, it's important to sort of understand what's there out the box and what. You can really kind of do do without it. The ideal is that you do as much out of the box with Salesforce as as it can realistically stretch to. Kind of give a quick overview of some of those things, and then talk about how the app sort of fits in between between those areas. So, so yeah, so the way I kind of. Tend to think about sort of the the paradigm of Salesforce sharing is you sort of it's about it's basically about like the okay who who do you need to share to and how do you share with them. And so, so in terms of the who, so that's about how do we kind of define and classify our groups of users. So, is that sort of people with a specific profile? So you mentioned around, yeah, perhaps certain profiles have access to all records of an object or permission sets. It could be users with a specific role or users that members of a public group. And then the the
[10:32] how. There's kind of tend to think of it as this overall ways that you might want to think about and organize sharing. So, so if we think about at sort of an an object level, so there's that sort of global sense of or or that that global definition of users who can access all records in an object. So. That's typically defined with with organisation wide defaults. So then t here is equivalent permissions at profile level and permission set level, and that again allow you to sort of switch on or off access to all records in that object. Where it starts to then get a bit more nuanced is when you want to control which records within the object a user would have access to, and there, there's kind of. It kind of breaks into sort of two, two categories. At least in my mind, so it's about do you try to sort of control who sees what through fundamentally through ownership. So who owns the record, and what is the relationship of a user viewing? That record to the person who owns that record, and then the other kind of way of thinking about it, and there's often a combination of these two going on in a more complex org, that you try to define who should have access based on the context of the data itself. So, this sort of paradigm. So, the most kind of common way of doing this is through criteria-based
[12:03] sharing rules. So, sort of, let you set up rules to say things like, okay, so if this picklist value on this record is equal to. A certain value, then share this record with the appropriate public groups. So, I I get a really clear message from what you just mentioned, and we kind of like condensed very difficult certificate into seven minutes conversation here. Thanks for that. But let's just stick to your app. What does your app do on top of these sharing rules? Yeah. So, so effectively, so so formula share kind of operates well when you have that kind of that need for data aware sort of context based sharing, and at like the simplest level, what it lets you do is to define rules that say. If this record has a specific field, which holds perhaps the name of a user, the name of a role, the name of a public group, or the IDs of those things, then share that record with. With that public group, or with that role, or or with that user. Now that sounds kind of quite simple, and it is quite simple, really. But sort of the real power of it comes when you when those fields can themselves be defined as formula fields, which isn't something that's possible with
[13:34] criteria based sharing. So that lets us do things like so we can share perhaps like there's a grandchild record to. An account. So I don't know. Let's say we've got like an invoice record. It's related to an opportunity. The opportunity is related to the account, and it might be that the the account. So we perhaps we know the country of the account, and we want to share that invoice record with the appropriate users from the country of of the account. Now, what Formula Share lets you do is basically set up a rule that operates against the invoice record. And allows you to to either to so it could be that there's a field on the invoice record that is a formula that looks up to the account, and even let's say perhaps the account is associated itself to a country record, and on that country record we've got the names of the roles or the public groups that operate in that country. So we can. Set up rules that share with the users that are defined in those fields. Effectively, so if I understand correctly. The invoice object example here is that you can look up and down the relationships of the object, and use the field from those objects as the formula field to define the sharing rules. Yeah, so that's there's there's kind of a couple of ways
[15:04] of doing it, and and yeah, so that that's you can either so either you can have a formula field on the object itself. So in that case, it's the The formula on the invoice that's populating with the role name, so the formula defines where it gets that from. So up up from the country record, but you can kind of for more involved use cases, particularly where the relationship is more complicated. Maybe it sort of goes up and then it goes down. It was based on a child object, or you can also define within the formula share rule what the relation. Where the field is elsewhere in the data model, so so you can say, okay, share this invoice with. I don't know. Maybe we've got like an invoice, maybe sort of a finance team or something, and we've perhaps we've got multiple finance teams involved on in the against the opportunity. We can sort of say, okay, share with all of the finance teams. That are linked as child records to the opportunity. So, in that case, we kind of go up to the opportunity, down to the to the finance team, and then perhaps share with all of the roles that are defined on those those records, or perhaps parents of those records. I see. I see. But for the customers of your app, they only need to declaratively define these rules across the relationship objects, right? They don't
[16:34] need to write any code at all. Yes, exactly. So that's the ambition, really, is to make this accessible. So this kind of logic, which Traditionally, you might basically you need to build your own framework or develop some custom automation to to do this sort of sharing. The idea is to kind of to move that from being a something that's a complicated development project to to a process that yeah is effectively it's it's simple enough that well anyone who kind of knows their way around Salesforce can set up rules. The creating a rule is sort of designed to. Feel as simple as creating a criteria-based sharing rule. So the majority of the process, there's no code involved. There's a very slight caveat. So there's there's different ways that we can have sharing. So you can have that happen asynchronously through a batch job, or we can have sharing applied synchronously. For the synchronous option, we basically have so we have like three three lines of code that you can add to a to a trigger that effectively will kind of call Formula Share, get all of the sharing to be inserted or moved. You have the inject into the trigger. Yeah, it's kind. Yeah, exactly. So it's kind of calling Formula Share to tell it to go and to go and figure out at this point in time what the sharing changes are
[18:04] and. How about the App Exchange? Are there any other similar apps with the similar functionalities? Good question. I don't think there's anything else which. Does quite the same thing, even anything sort of particularly close to Formula Share. At least not that I'm that I'm aware of. There, there are. I have seen. I forget the name of it. I have seen that there are apps that allow you to do things like sort of synchronize fields between parent objects and child objects, thing things like that. So that that's. That's one approach to sort of dealing with, which can work for some some complex sharing requirements. But in it, with that sort of paradigm, so yeah, perhaps you kind of you synchronise down a field from, in our I suppose in our example, down from the country object to the invoice object, sort of stamp. You kind of hear this term quite a lot if around these sort of custom sharing frameworks. It's sort of the idea of like stamping records, which sort of typically it tends to get used when when we need to use criteria based sharing to share records. And because criteria based sharing can't deal with formula fields, we sort of stamp values so that we can use those those sort of stamped text fields to share share instead. So I think there are apps out there that kind of help with. With that sort of stamping process, so you don't
[19:34] have competitors in the app exchange yet. It's a blue sea, but after this this episode, maybe you start to get more. Yeah, yeah, we'll see. Well, I mean, I would say, I would say the yeah, probably the the the the biggest competitor and the one that it would be great to see succeed is Salesforce itself. I mean, it would be great to see. I have a a good overview of what this app is, what it does, and who should use it. You know, in the past, I've built some apps like the mobile apps, which is like similar to what you're doing now. But I didn't stick to that. I spent like two or three months. I built it up, released it in the App Store and the Google Play Store. So it was out, but I didn't continue carry on on that. I know you need to spend a lot of time on that. Yeah, yeah, absolutely. I mean, I guess to your point around, I mean, it has been the honest answer is it's been a huge, huge investment of of effort, and there's in in in various ways as well because there's the you know kind of taking something from just an idea to a working version, and then there's there's a whole process of actually kind of getting it ready and. Security, sort of ready and reviewed, and having like appropriate build automation in place, like getting it kind of just technically sort of. Ready to go, and then there's like there's all
[21:04] this sort of other aspects to it of like well once it's out there, then there's people using it. They find problems with it, and there are some questions about it, and it's this sort of whole kind of yeah a lot of things. I guess for me as a technical person, I hadn't really been directly exposed to sort of some of those yeah I guess some of the more Sort of the marketing and the support and the sort of the product documentation and it's really easy to to quit at some point. Like I did for that mobile app because I just couldn't stick to it. I think my code was shit. I couldn't really expand on top of that, and it's so hard to find the next the customer. Why not spend your time on something else, which is maybe more interesting as an engineer, right? We just want to to touch in the code, build something. We don't want to do the sales, the marketing. So that's kind of out of a comfort zone. Definitely is. Yeah, yeah. I mean, I, yeah. I guess for me personally, like, I think the thing that just has really sort of kept me going. Through it is sort of the sense of of ownership. I think of like really kind of feeling like it's something that yeah you you know I've that. The the major decisions around this, you know, kind of mine to make. The design is is is my design. It's the, you know, it's the whole sort of.
[22:35] It's like if it's it's fundamentally you know of course I want to make sure this works for our users and like really does what they need it to and they want it to but kind of the way that happens is is is much more sort of in in my control and and there's something I mean I like I like you know my and my like I say my my day job is very is very different and that's really interesting as well sort of being part of big complex. Environments and having to make shared decisions, and but it's it's kind of nice, I guess, after you know when you do work a lot in that kind of way, to have something that is different and is a bit more independently owned. And I totally agree with you, Lawrence. I feel this is your baby now. You have spent so much time, right? It's all your own decision, so you couldn't just easily just give up, right? Ongoing, and there are milestones. Of course, there are really difficult phases, but once you reach the milestones, there's the next phase. Once you have some customers, yeah, exactly, yeah, and it's and it starts to become a responsibility as well. Because of course, when you do have customers, then it's really important that. Yeah, that that you your company your customers can can use the app in the in the way that they need to, and and that things yeah things don't go wrong for them, and that support is there when they need it, and it's yeah kind of it just puts a new dynamic on it that actually yeah does does sort of help
[24:05] help kind of keep that momentum and keep making sure that the product is as good as it can be and. And you also mentioned one thing. I think is really important to me as well is that in your spare time, as a software engineers, we have these skill sets. We can build stuff without involving too many people. Even one person, we can build a lot of stuff already. A mature product, if you want, and once you spend your spare time to do that, no matter it's in Salesforce or in other industry, right? You can build mobile app, you can build some console application apps. But those skills really are refreshing myself. Not only on my work, but I can really own something, learn different stuff. Which makes me feel really excited. For example, in my spare time, I'm learning the Rust language. I try to build something in the open source ecosystem. So it's a totally different feeling, and it reduces me the burnout feeling. Even I don't know do I have that or not, but definitely kind of stepped away from my daily work, which is maybe a more pressure in a sense. Yeah, I completely agree. Completely agree. And you never know when it's gonna. Need that, yeah. When it's become useful, yeah, yeah, indeed. It's, I mean, it's just opened a lot of kind of doors and conversations, and yeah, introduced me to a lot of really interesting people. So, so Formula
[25:35] Share is kind of built around an open core. Model so so we have sort of the a portion of the app is is open source so kind of the core calculation capability of it is is open source and and and yeah it's it's kind of it's been really interesting to. And really rewarding to yeah have sort of interactions with people through the open source process as well, and to kind of get to know other open source projects and yeah just just sort of be a part of that ecosystem, I suppose, and and yeah sort of feel what it's like to collaborate with people in in that environment. Lawrence, tell us a bit about what difficulties you have encountered. Yeah, sure. Yeah, so. Yeah, I guess sort of challenges. I mean, the the one that you probably hear hear most people who work with the App Exchange mentioning is sort of around the the security review process. Oh my god! Yeah, I know that. Yeah, so it's kind of kind of maybe a mixture of challenging and rewarding. But it, I suppose, sort of particularly that in that kind of early stage of sort of moving. This from being basically an open source project, which was in place in you know in in a few orgs, but ultimately sort of not not kind of a packaged solution. Like moving that to be something that's really security ready and has appropriate checks everywhere that it needs to. And that process, I mean, I learnt a huge amount through through
[27:06] that. You kind of it really gets you used to. Sort of security by default kind of principle, which you know is is important for for us to consider in you know in working directly in orgs as well as building packages. Yeah, definitely. I think by going through that journey, you have learned a lot. I remember when I was building a mobile app in the App Store, I also spent multiple rounds to go through the the first version publication. So basically, a lot of security check, a lot of things I need to tweak. So, yeah, I definitely remember those those old days. Yeah, I can. I'm sure you went through a lot of similar. Yes, indeed, and and then you kind of end up you're then supporting more than one version potentially, and yeah, it's get it's get complicated. Thanks, Lawrence. I think I've you know asked you a lot of questions around the app, and I think our listeners have definitely learned a lot from you. Before letting you go, do you have something else you still want to add? Yeah, I guess just really sort of a message for for your listeners that although you know I've talked quite a lot about the things that are challenging and hard about it, but in the in the scheme of things, building an app on Salesforce when you already work with Salesforce, even you know even even as you don't necessarily need to be a developer or an architect, just as as an admin, understanding configuration and how to. Basically, how to customize a Salesforce org is
[28:36] the most important part of building a good app, and the actual kind of you know the packaging and the packaging is very similar to change sets. Like the security review process, yes, it's annoying, but it's something you can get through. And and like relative to other platforms, I think the bar is much lower on kind of making the move from being somebody who works with implementing Salesforce to somebody who. Can build a product on Salesforce, and that that's like a really special situation to have. So, yeah, just just really kind of, I guess, like words of encouragement to any any of your listeners that have sort of got. A thought in their mind, or kind of a yeah, an intention to to build something. Just give it give it a go. And thanks, Lawrence. Previous episode fifty eight, if I remember. So it's Pat McLehame. He created the SMS app to send the messages across the customers. And he had almost zero knowledge about coding, so he learned from the very beginning. And then he built the app. He released the app. He had got some customers. And even yesterday, when I checked the the LinkedIn, he was going to the dreaming different dreamings in the U.S. to talk about the SMS related topics. You know, everybody can really build your own product. And I still think that no matter you succeed or fail, in the end, the learning journey is the most exciting, most rewarding part. So I do
[30:06] not really look at the end. the The final result is just the result. So really enjoy the experience. That's the same thing for our life, right? It's a unique journey. Completely, yeah. Couldn't couldn't have put it better. Absolutely agree. All right. So thanks, Lawrence. It was really great talking with you, and good luck with your. Formula share, Jared. Likewise, thanks so much. Yeah, great. Yeah, speak. Bye, bye, Lawrence. Thanks.
[30:46] Bye. Bye.