Can I use .net with Microsoft Dynamics systems? - dynamics-crm

I have googled, but can´t find a good answer. I´m a .net developer and looking into starting with Microsoft Dynamics (CRM and AX). My question is if I can use .net on this platforms or do I have to learn x++?

Yes and no. Dynamics CRM consists of a bunch of different customizational entries and some of them are .NET based (plugins, custom workflows, WCFs, external webs) while some are not (default workflows, JavaScript, XML customizations, FetchXML).
In my experience, at least based on the reality where I'm stationed, there's an abundance of people who can configure CRM but there's an embarrassing scarcity of skilled developer who can code .NET (and JS) to program the thing.
MS does what it can to make it possible to configure everything without coding but in the end, some things can't be resolved other than by good old hacking. Plugins is the golden goose, I'd say. If you learn how to write and install them, you're set. It's a bit of a threshold, that's true. But then again - if it'd be easy, everybody would be able to steal your job.

Yes .NET is the platform of choice for server-side customization of Microsoft Dynamics CRM. Start here: https://msdn.microsoft.com/en-us/library/gg327971.aspx. There's a lot of reading but you could be writing your first plugin in a few days.
I'm intentionally vague here because you should really take the time to read the materials out there to learn the right way. It will help you out a lot more then me giving you a paragraph summary.

Related

How to port existing vb .net office add-ins to work with office for mac?

I have an Office Word add-in that I wish to make it work with Office Word 2016 for Mac. I tried looking into official Microsoft documentation and could not find anything. I want to reuse as much code as possible while still having the extension to work with older versions of Word as well as Office Word 2016.
Is there any way to do this? Any help, even if it is something remotely related to this is appreciated.
TL;DR;
There is no way to do that.
Microsoft has bet on a new technology suite also called Office add-ins but web based. They are compatible with Mac. The old COM based approach (on which VSTO .NET add-in are built on) are legacy.
There is no way to reuse .NET code with this new technology, except of course to port business logic to the web server (which serves the web based add-in).
More reading on the comparison with the two add-ins generation: see this article I wrote
I second Benoit's answer. In addition, Not sure how complex is your add-in in terms of interactions with the document content, or if its a service that then inserts or imports data from a backend. Depending on that you will have more reusable code.
I would recommend you to do a full analysis on what APIs you need for your add-in to work properly. The new model offers big value with both supporting multiplatform and an easier deployment model. It also provides many rich APIs you can use, however the API depth its still not as rich as VSTO. Our goal is to get there.
I would be curious to understand if there are any gaps on you migration analysis.
thx!

Microsoft dynamics - which one to go for; ERP OR CRM

I have requirement of preparing an in-house Project Management and accounting app using Microsoft Dynamics. My requirements are similar to what explained in the below page:
http://community.dynamics.com/product/crm/f/117/p/54453/98182.aspx
Can someone suggest that should we use ERP or CRM? And which one to use i.e. SL, GP, NAV, AX? And why?
CRM is probably the first choice to eliminate. Project management is usually an internally facing application, while CRM is by definition, externally facing. Secondly, if you need to maintain budgets, Dynamics CRM doesn't have anything built in for this (a general ledger for example).
As for the others, each will have its own costs and the extent of support you can get for any of them will vary depending on where your business is located. In some areas you may be able to get good SL support but no NAV or AX for example.
As for one you may not have considered, have you considered Project Server / SharePoint? If you need really heavy weight PM capability, Project may be your best bet. SharePoint can do some PM stuff. There's at least one book around by Dux Raymond Sy, published by O'Reilly. He's also done at least one webcast. Both are based on SharePoint 2007.
HTH
Of the Dynamics ERP products, SL is the one most focused on the project management (i.e. Project Accounting) space. CRM doesn't have a lot of project management capabilities built in, but is probably the most customisable and extendable of the dynamics range.
If you're after something that needs to cover the financial aspect of PM (e.g. billing, tracking costs etc) then you should look at the ERP options. If you're not worried about the financial side, then building a custom solution within CRM might be an option.
Came across this thread in a search I was doing. Hope Sukhminder Singh is still listening...
Sounds like you shouldn't abandon Dynamics CRM, a tool which your organization has tried and tested for nurturing customer satisfaction and turning it into ongoing revenue. On the other hand, you need to maintain a smooth accounting and billing relationship with the same customers - and for that, you'll need an ERP solution. As ccellar suggested NAV can do that, or even SharePoint, as suggested by Mike. I'll hazard a guess your organization already has SharePoint, too.
Now, what about the integration? You know, devising an effective, scalable, and future-proof way for getting MS folk to "talk" is quite a challenge! Also, you need a solution that places stress on human, as well as system workflows. The human factor can be decisive in time-critical projects.
Sukhminder, are you going to be coding solutions on either end? That's one way to go, though often, that option comes with high overheads: dragged-out coding projects, functionality that can be difficult to maintain, and even harder to modify, and serious concerns when one of the systems is upgraded or replaced.
From another angle--are you considering BPM? I'd urge you to.
BPM (Business Process Management) software suites are becoming an increasingly practical and mainstream option as an organization's central integration hub. BPM lets you rapidly map out and control mission critical processes involving multiple systems (as in your scenario). BPM lets you visualize the players, processes and apps over time, and when it comes to adjusting, remapping, and remodeling your workflows, you may have to do some coding, but a large part of the work can be done by experienced, non-programmer BPM users.
There are a bunch of vendors out there, each with its own pros and cons. For the job of connecting MS CRM and MS ERP/Sharepoint, here are 3 candidates I have come across.
Kofax's TotalAgility BMP integrates between Dynamics CRM and SharePoint, by leveraging SharePoint capabilities. The solution obviates elaborate coding by supporting workflows, rules, and user screens. It "orchestrates" processes between itself and other MS and products, most notably SharePoint, CRM, Lync, Visio, Outlook. They enable "in-flight" process change and dynamic BPM, so that down-time on your production is minimal. See the data sheet.
Sequence Business Process Management from PNMsoft. Provides integration with systems from many vendors. The forte is on human-centric processes, with a strong bent for Microsoft products. Sequence lets you integrate with existing systems using wizard-based connectors. When your organization changes, Sequence lets you "hot-swap" your business processes fast, without down time in your production.
MuleSoft's CRM-ERP integration. Their strong point is application integration, for connecting (legacy) systems from a range of vendors, including SAP, Oracle, Salesforce.com, and MS. The Mule ESB is a lightweight integration platform. It comes with a library of connectors to quickly create connectivity with all systems and services, whether on-premise or in the cloud. When adding or modifying an endpoint, you can easily update your integrations to reflect the change.
HTH some....
I'd start off at the Microsoft Dynamics site and explore what each product has on offer. They even have an ERP selector tool for you to try out with just a few questions. Why not contact Microsoft yourself and they could provide a list of potential partners that work in your area - it will be an important decision and they would better guide you through the selection process.
After a few projects which also had an accounting part, I would not recommend to use Dynamics CRM (at least for the accounting part). That's not what it's meant for and you have to spend much effort to get to a level of Dynamics NAV for example.
On the other side: why not combine both systems and use their strenghts.

Learn dynamics-crm programming at home

I want to learn dynamics-crm on my own and I have few questions.
Since it is not a free product, is there any way to run my code and test it (free)?
I am a PHP + Java + mysql/sqlserver programmer, I have seen c# syntax and I c that it is similar to Java, is that a good idea to study alone?
Where can I find good online resources to study from?
1) Microsoft offers a free 30 day trial for Dynamics CRM Online. You could probably get a new one when the old expires. http://crm.dynamics.com/en-us/trial-overview
2) Extending Microsoft CRM entails knowledge of C# and JScript. You should make the jump to C# if you want to be able to write plugins and such.
3) The best resource is definitely the Dynamics CRM 2011 SDK - It contains a lot of samples and is very well documented in its help file. It can be downloaded at http://www.microsoft.com/download/en/details.aspx?id=24004. The CRM Developer Training Kit can be found at http://www.microsoft.com/download/en/details.aspx?id=23416. There are more good resources at the CRM Developer Center - http://msdn.microsoft.com/en-us/dynamics/crm/bb467596.

Which are the best sources for learning the Windows Installer technology?

I would like to know if you could share some (trusted) sources of information (books, URLs) that you consider the most relevant for learning Windows Installer. They could be for starting on this technology or for an advanced or professional level of knowledge.
Where can a future deployment engineer start and where can he/she go to keep on the right direction (step by step)?
I'm obviously biased but I think my blog and the WiX toolset are good ways to learn:
http://robmensching.com/blog
http://wix.sf.net (click on the Manual or Tutorial links on the right)
Some people like Phil Wilson's "The Definitive Guide to Windows Installer" but I never read it. I learned straight out of the MSI SDK.
I did 7 years of writing InstallScript installers before ever picking up MSI. While there is a huge difference between procedural script-driven imperative installs and data driven declarative installs, they both do the same fundemental thing: deploy software.
I became an MSI Expert but studying everything I could on the domain, writing LOTS of installs and by blogging for 7 years and answering over 4,400 posts on the InstallShield community forums. The only way to go in my book is to have been there and done that.
So the first step in your quest should be to understand the Windows Platform and related technologies very thoroughly. These evolve over the years but you should get a decent understanding of:
Fundamentals
Registry
FileSystem
NTFS
ACL's
DLL Types ( Win32, COM, .NET Assembly)
Win32 API
.NET Base Class Libraries
Service Control Manager Drivers ODBC
SQL IIS Active Directory ( GPO, LDAPand so on )
Global Assembly Cache
WinSxS Cache
DLL Hell
Good and Bad Installer Behavior
The second step is
Tools
Now let's start to writing installs. As Leslie ( Easter I assume ) said in another answer, pick a tool and learn how to use it to accomplish the above things. But don't stop there, as soon as you can go to the next step.
MSI
Start digging deep down into how your tool is working behind the scenes as soon as you can. Just as you can write C# in .NET and look at the IL with ILDASM, learn to use ORCA and see what is happening. Read the MSI SDK. Yes, it's rough and cryptic but I spent 3 months commuting beween DC and TX and I spent at least 16 hours a week traveling away from internet connections but nothing except the SDK to read. Read it, know it, live it... the cryptic help topics will eventually start to click and become second nature.
And finally, read my blog: DeploymentEngineering.com and every other blog you can find.
There is not a simple answer. The primary reason is that most install developers use a specific tool which in turn hides the bulk of Windows Installer behavior. While it would be nice if those developers had an in-depth knowledge of Windows Installer, that's not the case. 
My suggestion would be as follows: 
Focus on a specific tool. Many of the development environments offer a trial period and some are free. The on-line help for these tools plus the act of building some sample packages will be a useful process.
If practical, consider taking a training class for the tool. I know Flexera sells their basic and advanced InstallShield course manuals. They are a bit over-priced, but it does include need-to-know Windows Installer specifics. The problem you'll run into is that most documentation is specific to the tool without explaining a lot of the connectivity to Windows Installer.
You'll need the Windows Installer SDK -- in addition to the help file, there are some interesting tools and VBScript scripts. Orca is one tool that is included with the SDK and there are similar tools on the Internet (SuperOrca, InstEd, etc.). The SDK is not a great read but it is a great reference. As you come across specific questions regarding Windows Installer use the SDK help file to understand the deeper internals.
Google 'windows installer blog'. You probably don't want to hear that, but there are many great blogs available that cover many bits and pieces of Windows Installer. Make sure you pick up the Windows Installer Team blog.
No matter what path you choose, you'll find learning Windows Installer to be a hands-on process. I hope this helps! 
I'm also biased, but this might be helpful. I recently revisited WiX for a real-world Windows Installer project and wrote up my solution which ultimately plugged into a continuous integration server.
The steps in the article take you through using WiX, localizing the MSI, and creating a bootstrapper for installing any prerequisites.
For learning, Tramontana's tutorial WiX helped me a lot.
A nice little blog post about how to debug custom actions is WiX and DTF: Debug a Managed Custom Action and how to generate an MSI log.

Microsoft Dynamics CRM as a software development platform?

My organisation is in the final stages of acquiring CRM 4.0 for use as a general purpose software development platform. The company who is selling it to us has convinced upper management that CRM will solve all our productivity problems and make software development as easy as point and click. (They don't read Brooks.)
Having resigned to the fact that I can't stop CRM from being foisted upon us developers, I have been doing research on how to manage the complexities of large scale CRM development.
I have so far identified the following complexities that need to be addressed:
CRM seems wholly incompatible with basic configuration management practices.
Keeping the black box CRM database in bidirectional synchronisation with external LOB systems is both very hard and critical to project success.
What other complexities must I take into account when building a large scale CRM application?
What limitations does CRM have as a development platform?
Edit: This topic provided additional insight.
I've worked with MS CRM 3.0 and now 4.0 here's my take:
Whenever possible focus on standard best practices. Don't get overly confused by what CRM is doing or wants you to do.
Don't be afraid to break what's "supported" by MS. With some caveats on 2 major factors - will your company let you think outside the box to solve problems and do customizations/integrations that are not officially supported? - and are you comfortable enough with .Net, SQL, javascript etc to weave through their code and implement what you need?
I have sometimes banged me head 100 times trying to do something in a "supported" fashion when one small tweak to a js file here or a small db modification there gave me what I needed.
If constant data integration with other LOB apps is critical you should consider a 3rd party tool like Scribe (http://www.scribesoft.com/). It's not cheap but can basically get you 90% of the way when it comes to integrating with your other LOB apps.
As a general rule, MS CRM is great at contact management - doing things like tracking appointments, doing mail merges, etc. Could you use it as your core HR system - probably. Finance system - maybe a bit more difficult. The further you go from it's core competency of performing contact management the more custom work you'll have to do. The more custom work you have to do the more you should consider if MS CRM is the right solution to that problem.
I know you're likely well underway into your deployment of Dynamics CRM, but just a few quick tips:
I'd avoid making unsupported changes purely because it becomes too hard to track the changes eventually. Since Dynamics CRM allows developers to make C# Plugins and access to web services, it's usually unnecessary to make unsupported changes for anything non-trivial. Plus you run the roulette of having to hide changes from MS if you have to call their support. I know many people will include external javascript files (jquery, etc) and other somewhat benign changes, but try to mentally stop yourself when an unsupported edit involves anything non-visual.
Look into the phrase Microsoft Dynamics Xrm, there are several books on the subject that are excellent, http://www.thecrmbook.com/ is particularly good because it comes with some nice custom code to use with your CRM.
Source Control your customizations xml's and don't let people touch the database, also, Google Halan CRM tool, and use it for scripting out CRM customizations and javascript files. Easier than writing custom powershell scripts to do the same job.
Transaction Support
If your application require transaction support from the underlying platform, Dynamics CRM is not the correct choice. The reason is because currently Dynamics CRM SDK web service doesn't support transaction.
The reference thread is here : Does MSCRM web-service support database transactions?
Since you would like to utilize Dynamics CRM as a platform, that means all the business logic should utilize Dynamics CRM SDK Web Services as data access layer. But imagine without the transaction support and you're invoking a series of web service calls as a unit of work, and one of the web service calls fails. That means you potentially will encounter data integrity issue.
Configuration
Usually i create a custom entity called Configuration, which will store all the necessary related configuration for the current CRM application. After it has been created, you can use Dynamics CRM SDK Web Service to read all the necessary configurations from the Configuration custom entity

Resources