Microsoft Dynamics CRM
There are a few things that I’ve worked with since beginning work at Antelle that feel too “big” to describe with any sort of justice. Not unless I could hold your attention for a short novel of a blog post, despite that, I’ll give as abridged a summary as I can.
CRM stands for Customer Relationship Management, it’s not something that a customer is likely to ever see but it can act as the lifeblood of a business or organisation behind-the-scenes. In the most simplistic sense, CRM works as a series of forms that guide the user through various processes, the “vanilla” and most recognisable of these is the Business Sales Process.
A business will receive a lead, for example someone interested in a service the business provides, the lead can then be developed into an opportunity, which can be lost or one as it passes through the opportunity stage. After that there are products linked to opportunities that are offered to the customer. Once the opportunity is won, more forms, more processes lead to the completion of sales.
It is hard to quickly describe CRM, I could talk for hours about some subtlety or another. But what is pertinent to my role and this blog is developing for Dynamics CRM. I’ve had a crack at CRM recently, being given a blank organisation filled with default Microsoft sample data and entities.
That is an understatement of the highest caliber, fundamentals apply across the board, form customisation and view creation are the bread and butter of working with CRM but the purview of such things are vast. Custom entities require new forms and new views, there is a great deal of power in CRM but the same systems that make it a robust and reliable system also make it a great deal more difficult to develop for. Even a simple update to a large organisation requires a mammoth amount of work in a system that is sadly not suited to large wholesale changes.
As I started to learn and engage with the options available for customising CRM I came across so many blogs and written resources that make it all seem so simple. Which in fairness is not technically wrong, it often feels like the worst thing about developing for the platform is a case of how time consuming it is, instead of any inherent difficulty curve.
It can be painful to carefully plan a custom workflow using several custom made entities, which can take a long time to implement and test, moreso when you are still learning. Only to find that a different plan of attack is required to solve the problem. A calculated field can do an awful lot, but the most important lessons I’ve learned about CRM so far are more about learning which highly powerful tool of customisation will perform the job to it’s best.
With all things in development, it can be crushing to be over 99 of 100 hurdles only to find that the last hurdle simply cannot be passed and you have to turn back, often moving the hurdles back into place to passed again with a different approach.
For all that I’ve just said, CRM often seemed intimidating. A great big looming beast that I could really struggle to get a good grip on. I’ve moved away from CRM for the moment as other projects have taken precedence. Knowing now that CRM is perfectly accessible, just with a particular mindset and a not insignificant amount of patience.
The rules in CRM are fairly clear, it takes me back to learning Database Design and SQL in that often enough the reason you can struggle is simply because you haven’t yet learned the logic required to work with it. Database Design was foreign to me because it was perfectly disconnected, it can be hard to naturally connect when and why certain elements of the doctrine (if you will) interact with one another.
I feel that soon I will back to learning CRM and so I felt perhaps now was the best time to write a blog post (that was definitely meant to be shorter than this) about my experience thus far.
Hindsight is 20/20
I’ve been rightfully called out on it, it can be easy to try and learn a little bit of everything as soon as possible. It feels like common sense to try and know the bigger picture so that the little picture will be better and not out of place. With different programming languages this can be perfectly fine.
In this case I tried to make one small thing in every case and move onto the next. I learned how to make a custom entity, then I wanted to learn how to use it in a workflow, then I wanted to put a small web resource on my a custom form for my entity so I could reel off just how much I was learning.
Except when it came to presentation time it all felt too small. I had a big long list of things I’d done but the end result was really nothing of substance. In trying to do everything I’d missed things that really are important. In nodding my head at small victories and marching on to the next thing I was really not doing enough work where it mattered, and where I had done work it was often of pretty poor quality.
There is a (semi) famous quote detailing that you shouldn’t fear a man who’s practiced a thousand kicks once and instead that you should fear a man who has practiced one kick; a thousand times. I feel that rings true enough here. The objective of whatever I learn is to be of use not far, far down the line. But instead that it should be usable in the near-term, if I need to learn more than those things then I can. It has to be good enough to be useful though.
I do feel in CRM that it is absolutely what you can definitely do that is more important than what you maybe can do. That isn’t to say that knowing a little bit about a lot is bad, when the time comes for me too learn more and more things in-depth, I will definitely have a good springboard into it from the work I’ve done previously.
In conclusion, it’s not bad what I’ve done so far. It’s not really that good either, which is the problem. It’s easier to deal with a problem you can recognise however, instead of it falling on you when you can’t see it.
Thank you for reading.