Many Pies

Many Pies

Wednesday, May 01, 2024

Preventing duplicates from FormAssembly in Salesforce

Just a quick one.

When using FormAssembly (FA) with Salesforce that if you had a duplicate rule set to alert, then that would cause an error message to appear on the form. FA would treat this as a failure and not proceed. 

I submitted a suggestion to them that they treat duplicate alerts as warnings and not display them to the user, but I couldn't get them to understand what I meant.

So we have to handle duplicates after the fact, with a daily check, using a Google sheet that we wrote that looks up email addresses.

Thursday, April 25, 2024

Syncing people data between systems - why is it so hard?

Although some people write weeknotes I've never done that because I think what I've got to write about is too internal, or not interesting. However I'm writing about a work problem, not because I've got solutions, but to help me step back and think about it, and maybe get answers from you, dear reader.

Over the years I've been involved in getting data about people in sync between the HR system and the CRM (specifically a donor management system). You might ask, "why are staff on the CRM?". Staff can be customers, or in our case, donors. In particular, we would track potential staff ("enquirers") because the HR system didn't.

Here are some of the challenges I've had with the process:

People data is messy

Names in particular are messy, so when checking to see if two records are for the same person then it may be hard to work out. Systems tend to have unique ids, so storing the id of the person that the other system uses on this system gets round that. Until the member of staff makes a donation and spells their name slightly differently...

Addresses are messy too. In the UK there are unique DPSs, but validating incomplete addresses is more of an art best done by people, than a science at times.

The HR system isn't always definitive

I created a sync process that would compare the HR and CRM systems and highlight differences. When I created it I suspected that it would be unwise to assume that the HR system was the definitive source of truth, even though it was in theory, so the sync process would only highlight differences, not automatically update the CRM to be the same as the HR system. This turned out to be correct, and the process ran for several years, once a week, and most weeks there was something for someone to change on one of the systems manually.

Different definitions of people

You would have thought that all systems have the same definition of a person, but that's not the case with the sync method I'm using that's driven me to write this blog post. We use Salesforce as our CRM, and send out bulk emails with Campaign Monitor. There's a Salesforce App from Beaufort12 that synchronises data between the two systems. We have some couples that share an email address and so what Campaign Monitor treats as a unique subscriber corresponds to two different people on the CRM.

One consequent of this is that when one member of the couple dies that email address will automatically be unsubscribed and the remaining spouse may want to continue getting emails.

Testing integrated systems at scale can be hard

We don't have a test Campaign Monitor setup, so we're working on the live system all the time. Of course, it is possible to create test integrations in some circumstances, but if you're working with a complex system you may not be able to mimic all its complexity in a test setup.

Conclusion

None of this is has particularly helped me with the Campaign Monitor syncing problem I've currently got, but I hope it helps you with some general advice.

Monday, January 22, 2024

Alice Bartlett - the journey of a byline, and agile comms

 If I'm emailing myself something to note for later then it probably needs to be a blog post. Here is a really interesting talk by Alice Bartlett about the journey of a byline in the FT and their publishing architecture.

I captured this slide though, because it's a good summary of how to do internal technical comms. It's from the agile comms handbook:

The lure - a tweet length summary of what is going on. The context - a blog post, and email, a little video. Tell people enough, but not so much they don't have time to read it all. The detail - stuff only people elbow deep are going to care about - the tables, the architecture diagram, the decision docs.


Thursday, October 19, 2023

Salesforce DevOps - can you get away without knowing git? - part 2


This is following on from yesterday when I got a work item to review stage. Today I've found that you can ignore the pull request in git and work entirely within the DevOps interface to move that work item to the next stage in the pipeline.

I hit a problem with the deployment initially as there was an error in the XML for a report layout (duplicate column*). I had to abandon that work item, as I couldn't find a way to move it back through the process, to uncommit the changes and then commit all the files, apart from the troublesome one.

I also made a rookie error - you have to deploy profiles in order for newly created fields to be visible on the profiles you want.

Concepts

Here are the concepts I think you need to be comfortable with in order to be able to work through this process.

The stuff in setup is metadata, which underneath it all is a tree structure of XML files. Without really understanding the ins and outs of XML you need to be able to spot things like - this file defines a new custom field.

The tree structure follows familar concepts like objects, report layout and profiles, as well as more obscure things.

The deployment process is essentially updating those metadata files by copying them from one environment (i.e. Salesforce org) to another.

The pipeline defines the order of environgments that work items move through.

I think the word pull used in the work item and in the pull request doesn't need to be fully understand, but you do need to get this: for the first it's the things that might have changed that you want to include in your work item. For the second, it's the things that have changed that you want to move through the pipeline.

* Surely this must be a bug in Salesforce? If a valid report layout can't be deployed then there must be something wrong with the way the XML is created.

Wednesday, October 18, 2023

Salesforce DevOps - can you get away without knowing git? - part 1

Here at Wycliffe we've started looking into Salesforce DevOps Center [sic] and I've been doing some investigations. If you're a dab hand at DevOps in general then this isn't for you. If you've heard of it and want to know more then read on.

This step by step tutorial is a good start. My observation is that, for whatever reason, in the past Salesforce didn't give much attention to the deployment process with Change Requests that were a bit faffy to use. So third parties developed their own tooling, and now Salesforce with their own DevOps Center are trying to catch up with those third parties.

One question I had as I actually started using DevOps Center was whether you needed to understand git, or could you just get by with mostly ignoring it. When you set up DevOps Center you need to associate it with a git repository, so you have to at least interact with github.com. After that though, you can carry on, even though you don't really know what a branch is.

However, when I wanted to put my work item up for review, there was no more escaping:








The rest of my team haven't used git, though one has worked through a tutorial. My challenge is to try and lead them through the process and see if we can get by with understanding just the bare minimum of how git works. I'll write more posts about that as I explore.

Bonus link via Julia Evans, why Git is hard.

Tuesday, July 11, 2023

How should you develop yourself as an IT professional?



Photo by Scott Graham on Unsplash

One of my colleagues was picking my brains recently as they were creating career development materials for a variety of jobs across our organisation. They specifically wanted to point to organisations that had good guides. For professions like accountancy and HR there were some very specific Chartered Institutes that had CPD materials. For IT though, I think it's very different.

I've been with Wycliffe for nearly 25 years, so I don't have a lot of wide experience. However we have recruited three people (developer, IT manager and a tech support role) in the past few months, so I've seen several CVs and what people are saying on them.

As far as Chartered Institutes go, I'm aware of the BCS and the IEEE in the UK. However, none of the CVs that I looked at mentioned either of them. From my perspective, when it comes to recruiting people experience counts for more than anything else (though specific qualifications in, e.g. Azure AD are of some use). 

Through the BCS and their SFIAplus I came across the SFIA skills framework. It does seem quite comprehensive. I'm open to debate, but I think IT is a much wider field than Finance or HR. 

I think SFIA will answer the question "in my particular area, where should I be putting my effort to gain skills" or progress in my career, or other ways of describing getting on. However, is there anything more generic. In fact my colleague had already come across the Research Development Framework. Although it is aimed at the research profession in fact I think the topics in the inner circle and the quadrants, with a bit of tweaking, could apply to IT - creativity, self-management, professional conduct - all good things.

So in the end we pointed people at that framework and the IEEE CPD materials. I hope you find them useful.

It would be interesting to get the perspective from both of my blog readers - does experience count for everything in IT? Is there any field in which being a Chartered Engineer is a distinct advantage?

Wednesday, April 26, 2023

Management lessons from powerboating

 

Ariel view of a powerboat driving away from a partly submerged rock formation
I recently filled in my quarterly review form. One of the questions was "Outside of your work context, what opportunities do you have to learn and to grow? How do these influence you when you are at work?" (OK two questions.)

I answered that I'd done a powerboating course, but this had no influence on my work. I've submitted my review now, but I realise that I was wrong.

One of the exercises we did was to go and retrieve a boat moored to a pontoon out in the lake where I was being trained. I was at the helm and we drove by it and the crew didn't take the action I'd expected. The fault was in my communication - I hadn't communicated clearly what I'd expected them to do, just suggested what could happen.

On a boat whoever is at the helm has the responsibility for steering it, but also getting the crew to do whatever is necessary to implement whatever manouvre is in progress. It's very much a positional responsibility - if you've got the steering wheel (or tiller) in your hand, then you're in charge at that time. During our training the instructors and my fellow trainees took in turn to take the helm. Experience or seniority didn't count for so much - though we were listening to the advice of the instructor!

In work, leadership and management isn't so flexible. There are roles, and organisation structure, and levels of authority. However, in any given situation it may be clear who is in charge, regardless of structures, and that person needs to take the helm and lead.