I had two enterprise customers this week who both had similar security requirements, and both sets of requirements were solved with a similar pattern that I thought you might find useful.
Imagine your company organizes itself into different groups, and the work of each group needs to remain segregated from the work of the other groups.
So you configure your CRM organization with three business units — let’s called them Red, Blue and Green — each under the root parent business unit. And you configure the security roles with business unit-level privileges. So far, so good.
But now there is a requirement that some users in the Red business unit need to be able to work with records in the Green business unit, but not the Blue business unit. And some users in the Blue business unit need to be able to work with records in the Red business unit, but not the Green business unit. But no one is allowed to work with records in all three business units. What now?
Teams for Owning and Sharing Records
This is where teams come in.
CRM creates and manages a team for each business unit. These business unit teams have the same name as the business unit. Members of the business teams is managed by the CRM platform when we add or remove users from the business unit, so there’s not much we can do with the business unit teams.
To solve our challenge, we’re going to create another team for each business unit own the business unit’s records share them with selected users from other teams.
So we now have six teams:
- The default teams for each business unit: Red, Blue and Green.
- Custom teams to own and share records: Red Shared, Blue Shared and Green Shared. (Optionally, you can create one set of teams to own the records and another set of teams to share the records, according to your security requirements).
Note: the naming conventions for these teams are important but I haven’t found the perfect naming convention for lots of teams that have a similar purpose, so I’d love to hear your suggestions.
Managing Record Ownership with Teams
Instead of records being owned by users, in this design we’re going to have records owned by custom teams instead.
Team-ownership of records has several benefits:
- Teams don’t leave the company and have their accounts disabled.
- Teams don’t move from one business unit to another causing mayhem when all their records move with them.
- We can easily share records with lots of users from other business units by adding them to a team.
We’ll need to assign a security role to the record-owning teams so that they have privileges to own the appropriate records. Use the base security role you would assign to typical users. (If you have separate sets of teams for owning and sharing records, you could give the record-owning teams with a security role with Read, Assign, Append and Append To privileges at the business unit level).
I recommend using a plugin to reassign all your sensitive records to the appropriate record-owning team. (You could use a workflow, but I prefer using a plugin). The plugin fires as soon as the record is created and uses some record-based logic to determine which record-owing team to assign the record to. For example, if Red represents a sales region, then opportunities would be reassigned based on the sales region of the potential customer. It’s a good idea to use configuration data rather than hard-code the teams in the plug-in; for example by adding a team lookup to the sales region records.
This plugin is critical. We’re going to have Red users working with Green records. We need to use the appropriate business logic to ensure that if, for example, a Red user creates a quote on a Green opportunity that the quote is owned by the Green Shared team and not the Red user, otherwise Green users won’t be able to see the quote.
We’re also going to reassign all the existing user-owned records and assign them to the record-owning teams instead. You could achieve this programmatically if you have a large number of existing records to reassign.
Optionally, you can modify any views that are based on users owning records such as the My Accounts, My Contacts, My Cases and My Opportunities system views. For example, you can modify the views to filter on the Created By user, or use a custom user lookup on each record instead of the Owner field.
Step one is complete. All our sensitive records are now owned by a custom, record-owning team in the appropriate business unit.
Managing Record Sharing With Teams
The next step in our design involves adding users to our record-sharing teams. Users in the Red business unit don’t need to be added to the Red Sharing team because the users and the team are already in the same business unit and their security role gives them privileges to work with records owned by users or teams in their business unit. So all we need to do is add the appropriate users from the Red business unit to the Green Sharing team, and some users from the Blue business unit to the Red Sharing team. Hey presto! and we’re done.
This design has two big advantages over the more common design pattern of simply sharing records with another user or team:
- Our design won’t create any records in the PrincpleObjectAccess (POA) table which has been known to lead to performance issues.
- We’re not using the POA table. That’s so handy, it’s worth stating twice!
If you’ve created separate teams for owning and sharing records, you’ll need to assign a security role to our custom, record-sharing teams but usually one your existing security roles will be appropriate. For example, if most of the users you want to share records with are sales people, then you can assign the Sales Person security role to the record-sharing teams (or whatever security role you normally assign to sales people).
I spent most of last year writing my first book, Microsoft Dynamics CRM 2011 Customization & Configuration (MB2-866) Certification Guide, published by Packt Publishing.
I wrote the book because I think certification is important.
The Microsoft Dynamics CRM certifications aren’t perfect — I wish custom workflows, dialogs and reports were included in MB2-866 — but they are all we have.
Certifications prove that you have acquired the necessary knowledge to pass the exam, but their value to me is more than this: they show that you’re the type of person who likes to acquire knowledge. Candidates who have achieved certification often stand out because they are self-starters, responsible for their own career.
There are four exams available for Microsoft Dynamics CRM professionals:
- Microsoft Dynamics CRM 2011 Applications (Exam MB2-868). This exam covers the standard marketing, sales, service management and service scheduling functionality. It’s a useful certification for system administrators and business analysts.
- Microsoft Dynamics CRM 2011 Installation and Deployment (Exam MB2-867). This exam is useful for system administrators and implementation consultants, especially if you are working on on-premise deployments. It covers the CRM server, e-mail router, CRM for Outlook client, installation configuration options, upgrades and redeployments.
- Microsoft Dynamics CRM 2011 Customization and Configuration (Exam MB2-866). Aimed at system administrators, business analysts and implementation consultants, this exam covers the organization structure, entity modelling, user interface customization, auditing and solution management.
- Extending Microsoft Dynamics CRM 2011 (Exam MB2-876). Developers will be most interested in the topics covered in this exam: platform operations, custom workflow assemblies, plugins, application events, integration, and web resources.
Passing any one of these exams will earn you a Microsoft Certified Technical Specialist (MCTS) designation. MCTS certifications prove your skill in a feature area of a Microsoft product.
Whether you work for yourself as an independent consultant, or work for a Microsoft customer, or work for a Microsoft partner, earning a Microsoft Dynamics CRM certification leads the way to better career opportunities.
Microsoft partners value certified individuals because employing Microsoft certified professionals enables them to achieve silver and gold competencies that demonstrates their commitment to, and expertise in, Microsoft Dynamics CRM.
Microsoft customers value certified individuals because Microsoft Dynamics CRM solutions implemented, managed and supported by Microsoft certified professionals have a lower total cost of ownership and a higher return on investment.
Achieving certification demonstrates technical proficiency that validates your knowledge, adds credibility to your résumé, and will help you advance your career. When combined with real-world experience, certification will mean you are more highly regarded than other individuals with similar experience who haven’t taken training or shown enough initiative to achieve certification.
I wrote the book as a concise guide to help students gain the necessary knowledge to pass the exam; no more no less. It includes all the procedures you need to know, self-test sections at the end of each chapter, and a 75 question exam designed to simulate the real thing.
If you’re buying the book before taking the exam: good luck! I look forward to your book reviews.
If you want more real-world best practices on a wider range of Microsoft Dynamics CRM 2011, I’d also thoroughly recommend the CRM Field Guide, to which I was a contributing author along with an awesome group of other Microsoft CRM MVPs.
Just imagine if Microsoft demonstrated the capabilities of a new Microsoft Dynamics CRM Marketplace. Picture a new online catalog made significant improvements to help customers to find and consume add-ons apps and industry solutions from Microsoft partners. The new marketplace could introduce a fresh, Metro user experience similar to other Microsoft marketplaces such as the Windows Phone Marketplace and the Azure Marketplace.
Long-awaited improvements could bring a seamless click-try-buy experience to Microsoft customers so they could easily extend their CRM solution using some of the fantastic applications and solutions developed by Microsoft and its partners. For the first time customers would be able to install trial solutions directly into their CRM organization and buy the solution from the publisher through the Marketplace.
“I’d be really excited if there actually was a new release of Microsoft Dynamics CRM Marketplace. The new features would give us even more power and flexibility to create and publish CRM solutions to meet the unique business needs of our customers and help them be more productive,” said Neil Benson, CRM architect at Slalom Consulting and Microsoft CRM MVP. “The introduction of a frictionless click-try-buy feature on the Microsoft Dynamics Marketplace would open up profitable new opportunities that would enable us to expand our reach and get our CRM solutions out to a broader, global audience.”
The next Microsoft Dynamics CRM might have its own dedicated marketplace – separate from Microsoft Pinpoint and the Microsoft Dynamics ERP marketplace – making it possible for Microsoft Dynamics CRM customers to find the solutions they’re looking for.
A new search experience could return better results using the natural-language search capabilities of Bing, an improvement from the old search feature which exhibits many of the idiosyncrasies of the FAST search technology.
Visitors could sign in to the Microsoft Dynamics CRM Marketplace using their Windows Live ID making it easier to identify reviewers, save their favourite applications, store their preferences, identify their Microsoft Dynamics CRM Online organizations and their billing details.
Across the entire site, visitors could choose to filter on the CRM deployment type (CRM 4.0, CRM 2011 or CRM Online) and their language which is be applied to all site content. Country-specific filters and restrictions would be dropped.
There would be just two top-level categories:
- Apps: add-on applications with functional subcategories such as sales, marketing, and service
- Solutions: industry-specific solutions with subcategories such as financial services, manufacturing, and not-for-profit
Within each sub-category visitors could browse through featured, free, hot and new apps and solutions or browse them all and can sort by app name, rating, publisher name, or date published.
Publishers could select multiple sub-categories for their apps, and all apps would be reviewed by local Microsoft Dynamics CRM product managers to make sure listings are consistently high quality.
On the app page users could:
- Try for free: if the visitor is signed in and has associated their Marketplace profile with a Microsoft Dynamics CRM Online organization, a 30-day trial of the app would be installed. Visitors with on-premise deployments of Microsoft Dynamics CRM could download the solution package instead.
- Watch a demo: visitors could watch an app demo (if the publisher has published a demo video)
- Save to favourites: if the visitor is signed in, the app would be saved to their favourite apps list
- Buy now: if the visitor is signed in and has associated their Marketplace profile with a Microsoft Dynamics CRM Online or Office 365 billing account, and the publisher has signed up for billing by Microsoft, the visitor could purchase of the app directly from the Marketplace. Alternative purchase options would be provided for visitors with an on-premise deployment of Microsoft Dynamics CRM and for apps from publishers that have not yet signed up for billing by Microsoft.
- Contact the publisher: publishers could provide their contact details for a variety of channels including website URL, telephone number, website chat and e-mail.
- Share: visitors could share the app by email or on Facebook, LinkedIn and Twitter.
- Description and details: visitors could check the app’s description and get more details such as reviews, resources, technical specifications and pricing information.
- Reviews: the review engine would be given a major update so that only signed-in visitors can leave reviews so that reviews are more authentic. Signed-in visitors could flag helpful reviews and leave comments about a review. Visitors could also view a reviewer’s Marketplace profile and discover other reviews by the same reviewer.
Behind the scenes, Microsoft could also made some significant improvements for app publishers too:
- No regional restrictions: publishers could publish their solutions in several languages and visitors can choose to filter apps based on language, but the country-specific restrictions would be lifted. Microsoft partners could now publish their apps to a global audience of Microsoft Dynamics customers.
- Billing by Microsoft: to make it easier for customers to buy apps, publishers could choose an option called Billing by Microsoft which offers a number of fee models such as one-time fee, per user per month, per user-tier per month, or per organization per month. Microsoft would collect the subscription through the customer’s CRM Online invoice and reimburse the partner on a monthly basis after subtracting a small administration fee.
- Separation from Microsoft Pinpoint: Microsoft Pinpoint would continue to be the global catalog of Microsoft partners and services used by customers to find their local, expert Microsoft partner. The new Microsoft Dynamics CRM Marketplace would be built on an entirely new platform with features better suited to helping customers find, try and buy apps to enhance their CRM experience.
P.S. In case you hadn’t guessed already, the new Microsoft Dynamics CRM Marketplace is just this CRM MVP’s pipe dream. I’m just trying to make it easier for the CRM product group by imagining its capabilities and prototyping the user interface.
P.P.S. I edited the article on 29 May 2012 to make it clear that this is not an announcement about an actual new CRM Marketplace (apprently too many people were getting upset after having their hopes raised), so I changed the article to try and make it clearer that it’s all just a figment of my imagination.
Just in case you didn’t make it to eXtreme 2012 in Berlin, then you’ve missed a heap of great keynote presentations from the CRM product group at Microsoft.
Craig Dewar presented a few more details about the upcoming Q2 2012 service update (codenamed R8: CRM Anywhere) talking more about support for multiple browsers on multiple operating systems. Microsoft may also try and support additional combinations (e.g. Firefox on Linux) on a best endeavours basis.
Eric Boocock delivered some great demonstrations of the enhanced social CRM features and improvements made to the Activity Feeds feature released in the previous service update. He also got rounds of applause for his PowerView demonstration showing how rich, multi-chart, animated reports could be run over a timeline. Then exported to PowerPoint and then run again from within PowerPoint.
Craig returned with a frustratingly vague glimpse into future investments that Microsoft is making in future releases too. All high level stuff (as you might expect) but still an exciting list of themes:
- “Office 15″ support
- Touch support
- Social customer care
- Customer communities
- Contacts everywhere
- Azure data market syndication
- Lead scoring
- Customer insights
- Service dashboards
- Database snapshots
- Rich knowledge
With Microsoft making these kinds of ground-breaking announcements at eXtreme CRM, this conference has really established itself on the calendar. eXtreme CRM is run by passionate Microsoft CRM partners for the benefit of partners and customers. You can’t miss it next year: you never know what Microsoft might announce next time!
Today Microsoft announced what’s going to be in their next service update for Microsoft Dynamics CRM 2011, codenamed “R8″, under the headline: CRM Anywhere.
The R8 service update is expected to be available Q2 2011 (May or June is my guess) and is built on six broad themes: Mobility, Browser Flexibility, Social, Industry Templates, SQL Server 2012, Certifications.
Microsoft will be launching a new product, Microsoft Dynamics CRM Mobile, which will enable CRM Online, partner-hosted and on-premise customers with Internet-facing deployments to use CRM on up to three devices per user.
There will be native clients, which means offline support, on all the main mobile platforms:
- Windows Phone 7.5
- iPhone & iPad
I haven’t seen any of the licensing details yet, but I understand that this is a subscription service (even for on-premise customers) for $30 per user per month.
For years prospective customers have been crying out for multi-browser support and Microsoft has finally delivered! Once R8 hits your CRM server you’ll be able to access CRM using:
- Internet Explorer 7 or above on Windows 7, Vista and XP (no change there)
- Safari 5.1.1 or above on Mac OS-X or iOS 5
- Firefox 6 or above on Windows 7, Vista and XP or Mac OS-X or iOS 5
- Chrome 13 or above on Windows 7, Vista and XP
Activity Feed Enhancements
In the Nov 2011 service update (codenamed “R7″) Microsoft released the new Activity Feeds feature which introduced some social enterprise features into CRM 2011. R8 introduces a series of enhancements to the Activity Feeds feature: like/dislike, enhanced filtering (e.g. @me, types of records I follow, record views), and an updated mobile activity feeds client for Windows Phone 7.5.
Building on the work of Microsoft partners and its own consulting team, the Dynamics Labs will be releasing several industry templates into the Dynamics Marketplace. The first few templates will be:
- Wealth Management
- Health Sales Plans
- Relationship Management for Health
The templates will include data model customizations, dashboards, workflows and sample data. They’re designed to help customers in those industries visualise how Dynamics CRM can help their business, and speed up an implementation without necessarily being a fully-packaged vertical industry product.
The United Kingdom has universal health care so the US health industry templates are likely to be of limited use here, but I love how the wealth management and non-profit templates cater for the complete opposite ends of the spectrum.
SQL Server 2012
Microsoft’s own data centers have already been upgraded to SQL Server 2012 and the R8 service update bring official support for partners and customers wanting to upgrade their own deployments to SQL Server 2012. Additionally, there will be some new CRM features that make use of SQL Server 2012 new capabilities. For example: performance improvements, enhanced database recovery, next generation business intelligence (“Crescent”) such as pre-defined Power Pivot models, Power View reports, and time-animated reports.
Certifications are critical to enterprise adoption and Microsoft has been working hard over the last year to ensure that its data centers and CRM Online service meets several important certification standards.
- ISO27001 for the data center and CRM Online service
- SAS 70 Type II for the data center
- SOX for the data center
- SSAE 16 SOC1 for the CRM Online service
- Safe Harbor
- Data Processing Agreement
- EU Model Clauses
- HIPAA compliance will also be supported through Business Partner Agreements
For More Information
- Download the R8 Release Preview Guide from the Microsoft Dynamics CRM website
- Read the Microsoft press release on the Microsoft website
- Read the CRM Anywhere blog article by new CRM General Manager Dennis Michalis
- Microsoft has also announced video previews of the new R8 features will be available on the YouTube channel for Microsoft Dynamics CRM in a few weeks
I’ve often been asked during the evaluation or analysis phase of a CRM project to describe the reporting capabilities of Microsoft Dynamics CRM. So here’s a quick summary of what’s possible:
- Built-in reporting features: system and personal views using Advanced Find, exporting to Excel with static and dynamic worksheets and pivot tables, the Report Wizard feature, charts and dashboards. The CRM Resource Center contains a good introduction to CRM reporting. Additionally, these topics and more are all covered in the CRM 2011 Customization training course and there are lots of learning materials available (books, e-courses, classroom courses, blog articles).
- Custom reports: Microsoft Dynamics CRM uses Microsoft’s reporting technology, SQL Server Reporting Services (SSRS) for business intelligence. Custom SSRS reports can be developed by a SSRS developer who understands the CRM data model using Visual Studio BIDS or by a data analyst using Report Builder and then displayed within the appropriate areas in the CRM interface. Again there are lots of good SSRS training options available.
- Really custom reports: there are various options available for meeting complex Dynamics CRM reporting requirements: Microsoft SharePoint and PerformancePoint, Zap Business Intelligence, QlikView, TARGIT and so on. You may not need to use any of these add-on products, but it’s often good to know that there are plenty of options available.
The Medical Physics department at a hospital trust in London needed to replace an ageing medical device asset management system. Their application strategy was to implement customised Microsoft Dynamics CRM and SharePoint applications when the time came to replace their 700 line of business systems.
So I set about implementing Microsoft Dynamics CRM 4.0 using an agile methodology and working closely with the Medical Physics users to prioritise and implement the features they needed. Towards the end of the development we needed to migrate 125,000 historical engineering jobs (a ‘job’ is a customised version of the ‘case’ system entity in this project). However, you can’t import resolved cases using the CRM 4.0 Data Import Wizard. I was working alongside a talented CRM developer, but he was busy adding new features and upgrading our development environment to CRM 2011, so I didn’t want to distract him with data migration work. I needed to find an alternative data migration solution that didn’t involve custom development. [Sorry dear readers, but this is not the first time I’ve had to admit this is public: I am not a CRM developer!].
I quickly tested the much-improved CRM 2011 Data Import Wizard but this doesn’t allow resolved cases to be imported either. After a quick review of the available options, I started working with Inaport 7.2 from InaPlex*.
Inaport has native connectors for Microsoft Dynamics CRM 4.0 and 2011 and supports CRM Online, on-premise and partner-hosted deployment models. It also supports a variety of other CRM systems – such as, Goldmine, ACT!, Sage CRM and SalesLogix – as well as generic data sources such as text files, SQL Server, Oracle and Ingres databases. It uses the CRM web services API so all its features use supported methods without requiring the user to understand the CRM SDK.
The Inaport help file offers some good advice for working with Microsoft CRM’s unique data types (owner, relationship lookup ID, status and status reason options, picklists/option sets, date and time) and Notes (annotation) entity for handling attachments. It can be installed on a PC or server and configured with minimal programming skills, which played to my weaknesses. Some SQL skills and previous experience with regular expressions will help if you have more complex requirements.
Inaport’s data transformations are carried out in memory, so you don’t need a local staging database; although you might choose to use one if maximum performance is an important requirement. For my simple import routines I managed to achieve a throughput of approximately 60 records per second in a my development system (a virtual machine on my laptop with 5GB memory running Windows Server 2008 R2, SQL Server 2008 R2 and Microsoft Dynamics CRM 2011 UR2). For my most complex routines, throughput fell to three or four records per second. These commonly involved dozens of queries against the CRM database, which Inaport supports via web services, reassigning records or resolving cases where each operation requires lots of web service API calls.
My data source was a Linux-based pseudo-relational system and the data was given to me as a series of text files. Inaport seemed happy to consume the files as long as I remembered to convert the ANSI text files to Unicode text files so that some non-Roman characters could be resolved (Inaport has full international support; InaPlex tells me they have customers using text import in Japan and China, for example). I configured an Inaport import profile for each file (equivalent to a CRM data map). I started with reference data such as job codes, departments and product categories, followed by products, then assets and finally jobs.
I found that Inaport had several useful features that allowed me to meet requirements that I just couldn’t have met using the CRM 2011 Data Import Wizard:
- Inaport supports SQL queries if connecting to a source database but if your source is a text file it also supports filters so that I could exclude unnecessary records from my source files without having to manually edit the files.
- It has some powerful data manipulation features that I could use to split text strings into separate fields, format dates correctly for import into CRM, and convert source values into CRM option set values.
- I could use the ‘dbselect’ feature to lookup GUID values in CRM which enabled me to associate child records to the correct parent records much more accurately than relying on a name match using the CRM Import Wizard.
- I could daisy-chain import routines together and run the end-to-end import process for all entities as a single batch process. I could also send the results of an import profile run to my email inbox which was great for reviewing the results of a weekend-long import routine without having to sit at my PC all weekend.
- And, most importantly, I was able import records with any Status and Status Reason combination. This enabled me to import and close historic records, especially resolved cases, which I simply couldn’t have done with the CRM Import Wizard.
You could probably configure Inaport to migrate all your data from an on-premise CRM organization to a CRM Online organization, or mirror your CRM Online organization to a local database. However, configuring Inaport profiles for all your entities could be a time-consuming task and InaPlex could do a lot more to help speed up this configuration for customers with this requirement.
Hints and Tips for using Inaport with Microsoft CRM
Configuring a source or target connector takes less than a minute. If you want to update records inside your existing CRM database, you’ll need two connectors – one source and one target – both pointed at the same CRM organization. After importing all the job records I used this feature to close or cancel the historic jobs based on text data I had imported into another field.
Inaport provides a preview pane that shows up to 10,000 records from your source data, and most importantly shows what your data transformation expressions have done to the data. This allowed me to check the results of my expressions before importing a byte of information into CRM.
Working with Numbers
I was able to use some of Inaport’s conversion and arithmetical functions in order to import values into integer fields. For example, “sum((s2n(#[repair time hours])* 60),#[repair time mins])” combined the number values from two text fields ready to be loaded into a integer (duration) field in CRM.
Working with Dates
Microsoft CRM accepts dates in the following formats: “yyyy-MM-ddTHH:mm:ss” or “yyyy-MM-ddTHH:mm:ss +00:00”. As my source data had the dates and times spread across three fields, I had to combine them, which I was able to do using expressions such as “d2s(date(#[start date]),”yyyy-MM-dd”)&”T”&padl(#[start time hours],2,”0″)&”:”&padl(#[start time mins],2,”0″)&”:00″”. Occasionally, I had to use the ‘skip’ function to avoid trying to insert blank date values into CRM (which would cause a 0×80040203 error message).
Working with Lookups (Parent-Child Relationships)
Inaport allows you to import into multiple entities in a single pass, and will automatically populate the parent and foreign key values. However, it also allows you to do run time queries against the target CRM system, and use the results of those queries to build associations if necessary.
I made significant use of Inaport’s ‘dbselect’ feature to associate child records with a parent record. For example, I used the following expression: “dbselect(“T”, “SELECT accountid FROM account WHERE gstt_departmentcode = ‘gstt_parentdepartment”)&”::account”” to associate an asset with the hospital department that owned the asset. (A ‘department’ was a renamed ‘account’ entity in this project).
While dbselect functions are very useful, they are also a performance drag as Inaport has to convert the query into a CRM SDK call, receive a response from the CRM server and then process the response. Some of my import profiles used dozens of dbselects and as a result Inaport could only process three or four records per second.
InaPlex offered some advice for using cross-reference tables to improve the performance of dbselect functions (although a blog article with an expanded explanation would have been better). Unfortunately, I didn’t have database rights to create new tables on my customer’s database server so I couldn’t make use of this technique.
Inaport supports other functionality that tried out but didn’t need to use, such as:
- A range of matching techniques, including fuzzy matching that allows matching of misspelt company names
- Dynamic record ownership reassignment (very useful for migrations from legacy CRM systems)
- Pre- and post-operation expressions, which get executed before or after a record is modified; the post operation has access to the primary keys of the record and all parent records, which provides enormous flexibility.
- Ability to define custom code using any Microsoft .NET compatibile language, and have the code accessible from any point that an expression can be executed.
InaPlex Inaport 7.2 enables data analysts, with little or no programming skills, to meet sophisticated data integration requirements involving Microsoft CRM. It offers a rich set of features way beyond the CRM Data Import Wizard and comparable with much more expensive mid-market ETL tools such as Scribe Insight. InaPlex provided fantastic customer service and support throughout my project.
* Full disclosure: InaPlex provided a temporary license for Inaport 7.2 free of charge to my customer in return for me taking a one hour training class and agreeing to blog about my experience using their product.