Mohammed Rasheed Gomaa is a Senior D365 Techno-Functional consultant recently moved to Saudi Arabia from Sydney Australia. Rasheed has authored multiple plugins for XrmToolBox. He is now leading D365 User Group in Riyadh. I have asked him technical questions and also about D365 market in Gulf and how it is to live and work in KSA.
Tell us about your professional experience and how you started working with D365 ?
I have 11 years of total experience, 9 years as Dynamics CRM CE Techno-Functional consultant, I started working on Dynamics CRM since version 4. I have worked in Australia, USA, Egypt, KSA, and UAE. Currently, I am a Tech Lead in an international company in KSA. I started my D365 career as .Net Developer who did an integration task with CRM, from that time to on, I became a Techno-Functional consultant.
You recently have moved to Saudi Arabia, how is the market there?
KSA is a booming/ greenfield market, not like Australia or USA (with a lot of competition between partners and consultants). Almost all of my projects in KSA are using CE as XRM, not as modules, so we can say XRM is the main module. Then comes Customer Service and Field Service.
For the success of a D365 project, what are a few things (practices or steps) you do when kick-starting a new project?
It’s based on your situation are you working for an end client or partner, but generally:
- Set the expectations between all project parties:
- Define the roles and responsibilities.
- Define artefacts & deliverables.
- A quick review of the project plan with the team & client.
- Highlight the risks & the mitigations.
- Make sure the scope of work is clear to all.
- Open direct communication channels between key persons in the project.
What delivery methodology you have found useful in projects?
I prefer something between Agile & Waterfall:
For high-level requirement & architecture waterfall, and agile for development & testing.
What is one thing that can make a project successful or vice versa?
There is no magic word in this subject. Still, I believe there are multiple early signs for the failed project, so I think the management should notice this early and apply Plan B.
Give me two (or more) tips that will enhance the performance of an application?
- Deal with performance as functional requirements.
- Apply Load Test.
- Remove unused data/ Plugin/ workflow/ any feature, especially auditing.
- For on-premise env: Load Balancing.
- In your code, be careful when you deal with:
- Lock/ NoLock
- In your plugin always use, “IOrganizationService” instance from plugin context directly.
Tell us two things (or more) which will improve the quality of deliveries?
- Pay attention to all “ility” family:
- Automated testing.
- Apply gamification concept for each dev& test team individually, also avoid long ping-pong game between them.
In the context of D365 implementation, what does architecture means to you?
- Prepare a high-level technical solution for business requirements.
- Care about both function & non-functional requirements.
- Recommend the most suitable business models & technical tool for the project.
- Appy design principles.
What few things you consider when you are architecting or designing a solution?
- Consider functional & non functional requirements
- Set client expectations.
- Use the out-of-the-box feature as much as possible.
- Avoid any deprecated or not well-supported feature/tool.
Tell us anything that you consider is/are the best practice(s) and everyone should follow?
- Follow management process.
- Avoid copy, paste as much as you can
- Do not use hardcoded values … “magic strings”.
- For each entity, create an administrator form which contains all fields without any validation.
- Do not depend on the default values. (No default team, business unit, currency, ….).
- In workflows add true conditions as much as you can. (to avoid redo for the whole workflow).
Share a tip of yours to boost productivity as a dev, consultant or architect?
- Use tools and scripts.
- Before developing a feature/ tool, do a search first “don’t reinvent the wheel.”
- Follow best practices.
Tell us about a canvas app that you have built or seen which was awesome?
I saw/ did some POC, but still no real implementation.
Have you seen an impressive AI application recently, preconfigured or custom which you want to mention?
Some wonderful POCs on chatbots/ sales/ field service. (none of them was mature enough though).
How do you analyze and build security in projects? Any tips?
- Review organization structure (roles, branches/offices). Based on that, you can decide to structure business units.
- Select suitable Hierarchy security to control access (position or managerial).
- Ask the client if there are any critical fields to apply field-level security.
- As you cannot change the entity ownership from organization to user-team, so do enough analysis to avoid any rework.
While doing configurations, do you follow some rules or practices?
All configuration should be done automatically by tools, scripts or even by import-export, avoid manual in environments.
Managed or Unmanaged?
It depends, but generally, if you will resell to multiple clients or publish your own IP then it must be managed.
Early bound or late-bound?
I like to autocomplete and reflection, so I use both based on the situation.
LINQ, FetchXML or QueryExpression?
FetchXML is more powerful, especially for manipulating strings
LINQ is much easier in manipulating the objects
QueryExpression in the runtime.
Realtime vs batch?
Based on the scenario, but usually, I prefer batch jobs.
No code/ low code or hardcore development?
Depends on the requirements and no/low code tool’s availability and maturity.
In your kingdom, what sort of testing is mandatory (add more value) and which are optional?
- Unit Testing
- User Acceptance Test
- Functional testing
- Integration Testing
Optional (especially for out-of-the-box or low code tools):
- Load testing
- Automation Testing
- Security Testing
Generally for Integration which technology and pattern is your choice?
Depends on client environment and requirement, in general, I prefer APIs & service bus. In some cases, we can use one of the data migrations tools as an integration tool. Custom development still a good approach for some projects.
Any open-source, community development, toolbox plugin that you want someone to develop?
Dynamics 365 community is a vibrant community, we all are searching for an idea to implement.
If you have all the resources to improve one thing in D365 what that would be?
Supporting some languages, especially Arabic, Till now customer insights, Portal and AI still not support Arabic.
If you are selling D365 just by one feature, what that feature is?
For me it will be an application customer service or fields service may be.
What will you suggest to someone who wants to be a D365 professional?
Start it now with the online version, initially work for a partner. Be technology hungry and keep attending community events.
What advice will you give your younger self who is already working as a D365 professional?
Before 30 years old do not work on only one project more than 1 year (work for experience), between 30 to 40 work for money and expertise comes itself. After 40″ I cannot tell as I still do not reach that age”.
In addition to:
Be active in the community and think about involving in the community. If you like, do blogging. Share what you know with others.
Be very careful about your reputation. People first, Project second and company third.
What are a few things you do to be efficient in working?
Teamwork & machine work (automation), by merging both in one environment means you have the black magic.
What is the best way to keep up with technological advancements and changes?
It is tough to be aware of everything, so my recommendation is to keep an eye on Microsoft roadmap and events.
Any recommendation or guideline if a D365 professional wants to work in KSA?
Understanding the mindset/culture of middle eastern people is the keyword to work in KSA. Be patient when dealing with the client as they keep changing the requirements, this still is the most challenge part for me. People are amiable in KSA, so be friendly to them as well. Same time don’t let anyone interfere in your personal life. Set the expectations, borders, requirements and rules from day one. Here the culture of private consultant, contractor, or part-time working is not fully embraced yet. Be cautious when accepting a job, focus on full-time jobs only.
Thank you Rasheed.