Jim Novak is a Microsoft Business Applications MVP and a D365 technical architect. He leads D365 Saturday and TDG communities in Washington D.C. area. He is an admirable and inspiring community contributor. He frequently arranges events, presents as a speaker and develops tools for the community. I hope you will like this chat with Jim Novak 🙂
For the success of a Power App or D365 CE project, what are a few things (practices or steps) you do when kick-starting a new project?
Set expectations for both the team and the customer – and reassess these throughout the project
Channels of communication – everyone has a say, so speak up!
Key stakeholders on the project who have the authority to make decisions
What delivery methodology you have found useful in projects?
Agile has worked best when it’s actually being followed. Waterfall usually cannot keep up with faster paced projects
The methodology needs to be established early in the project and the entire team needs to be disciplined in following it, or adjusting when something is not working
A hybrid of Agile and Waterfall rarely succeeds in my experience
What is one thing that can make a project successful or vice versa?
Lack of communication and setting expectations can destroy a project. If each group is expecting a different outcome, then someone is going to be upset.
Preparation – when the project starts, being unprepared can cause huge roadblocks. For example, working on a D365 project and the customer has not yet procured licenses and an environment for development and testing
Give me two (or more) tips that will enhance the performance of my applications?
Avoid performing Creates/Updates using LINQ objects
For large queries, avoid LINQ
Reduce round trips wherever possible
Use the Pre stages in plugins to update the Target vs the Post to perform another update
Tell us two things (or more) which will improve the quality of deliveries?
Communication – all around… within your team and to the customer
Trust your team – if someone speaks up, listen. Even if you disagree, it goes a long way in building trust
In the context of D365 CE implementation, what does architecture means to you?
Big picture – all the moving parts. How to configure D365, security, entity model design, integrations, etc.
Architecture to me means establishing an approach for the above early in the project, implementing, and adjusting as challenges arise.
What few things you consider when you are architecting or designing a solution?
Environment – Government Cloud vs Commercial
Integrations – any integrations required with external systems?
New solution vs move of an existing – can we leverage existing knowledge, technology, or business approaches to the new solution
Tell us anything that you consider is/are the best practice(s) and everyone should follow?
Standards for your team, devs and business analysts, that everyone will follow. For example, naming conventions on entities, attributes, etc. That can make a big difference when developers write code against the entities.
Another example – documentation… being disciplined in documenting your work. Makes a big difference down the line when you wonder why someone did something!
Share a tip of yours to boost productivity as a dev, consultant or architect?
DevOps – a solid dev ops process can reduce time to deploy, keep the team in sync, and identify issues early. Even for a single dev, this can be a big timesaver
Have you seen an impressive AI application recently, preconfigured or custom which you want to mention?
I have not had the chance to work with any AI
How you analyse and build security in projects? Any tips?
Start early – work on security as you are working out the data model and not as an afterthought
One approach is to start with a restrictive approach from the start. Assume data is going to be locked down and grant access as required. And the opposite – assume open and lock down selectively. Each approach means a good understanding of the requirements early in the project
Look at the “day in the life” of an end user. That may offer some insight into how to lock down security if needed. How will User Group A access data vs User Group B?
How will the end users be accessing this data? From the UI only, via Reports, or through external integrations? Answering these questions early will help in applying security
Leverage Team ownership where possible as it often removes a single point of failure when working
While doing configurations do you follow some rules or practices?
Naming on entities, attributes, etc
Naming of form Tabs and Sections. This makes a big difference in Portal work for metadata as records
Documenting in the metadata – makes generating documentation easier
Managed or Unmanaged?
In recent years, I have come around to Managed. It adds stability to downstream deployments
Early bound or late bound?
Early bound where possible
LINQ, FetchXML or QueryExpression?
LINQ for simple, low row count queries, but not for updates
FetchXml seems to be the fastest
Realtime vs batch?
Batch where possible. Ex., ExecuteMultiple isn’t supported within a plugin and can cause SQL locks (I speak from frustrating experience there)
No code/ low code or hardcore development?
Yes – low code/no code until you hit the limit
LC/NC puts a LOT of power in to the hands of non developers who typically have a better understanding of the customer requirements
Once you hit the limits of LC/NC, the developer will have a narrower focus rather than building everything
In your kingdom, what sort of testing is mandatory (add more value) and which are optional?
Unit testing can be a lifesaver on a project – reduces errors on releases, can identify bottlenecks, etc.
Unit testing for devs also offers a common framework for building solutions. It can be used to communicate methods / patterns for development. Can also serve as a tool for ramping up devs. New to the code? Check out the unit tests for a bit of an idea how things work.
Generally for Integration, which technology and pattern is your choice?
Totally depends on the type of integration. But recent projects, Azure Function Apps have been super helpful
Any open-source, community development, toolbox plugin that you want someone to develop?
Where do I start!?
Actually, I have a list of plugins that I am working on… I like to build them myself
And I rely on several XrmToolBox tools on a daily basis!
If you have all the resources to improve one thing in D365 what that would be?
Developer tools – loads of capabilities with the SDK but the toolset is fragmented
Deployments – deploying solutions is incredibly powerful, but moving data is a pain
What is one thing in model apps you consider people are not utilizing its full potential?
PCF controls – fairly new so I expect this to change!
If you are selling D365 just by one feature, what that feature is?
Data modelling – in just a few minutes, a non developer can build out a fully functioning and performant enterprise database
Or… security – the security model on the entities is very powerful
What will you suggest to someone who wants to be a D365 professional?
Grab a trial and build something!
Access to a trial environment is MUCH easier these days, especially for partners and the quality of the documentation in the last year has greatly improved
And I find building something is easier than reading vanilla how-to documents
Check out some of the solution accelerators for ideas
What advice will you give your younger self who is already working as a D365 professional?
Participate in the community! I missed out on a lot over the years because I was either shy or did not make the time.
The community has a TON to offer for learning
and share with the community. You will be amazed at how much help you have to offer someone!
What are a few things you do to be efficient in working?
I struggle with this – one thing I am working on myself is focus. There is so much going on in the industry, focus on what is in front of you vs trying to take it all in
What is the best way to keep up with technological advancements and changes?
Follow the community sites – lots is posted about the platform by Microsoft themselves
Follow some community “leaders” – lots of community members have built expertise or have unique access to information. Find some key people you trust to follow for updates