Hosk’s Top Dynamics 365 Articles of the week – 22nd February

Quotes

Mediocre people don’t like high-achievers and high-achievers don’t like mediocre people. Nick Saban

Success doesn’t come from pie-in-the-sky thinking. It’s the result of consciously doing something each day that will add to your overall excellence – Nick Saban

#HoskWisdom Favoutes this week

  • If you don’t learn to fail, you fail to learn #HoskWisdom
  • Developers dance to the speed of the project and the tune the project manager plays #HoskCodeWisdom
  • You know nothing Jon Snow, particularly about writing an auto number plugin in Dynamics 365 #HoskWisdom #HoskCodeWisdom
  • Good code comments itself, bad code is commented on by developers saying “What the f**k is this meant to do?” #HoskWisdom #HoskCodeWisdom
  • Less code is always more #HoskCodeWisdom
  • if your code is not readable it’s not maintainable #HoskCodeWisdom
  • I’m not a programmer, I’m a code delivery ninja #HoskCodeWisdom
  • The Hosk crushes bug totally, until they wish there were never created by me #HoskCodeWisdom
  • You are only as good as your last line of code #HoskCodeWisdom
  • The code in your source control is only as good as your weakest developer, unless you review it before it’s checked in #HoskCodeWisdom
  • Having a great idea is not enough, it needs hard work to turn the idea into something real #HoskWisdom
  • Get out of the comfort zone and move into the difficult, scary, no idea, uncomfortable zone. It’s better for you #HoskWisdom
  • The end is important to others, the journey is important to you #HoskWisdom
  • Ego lets you hear praise and ignores criticism, yet it is criticism which helps you improve #HoskWisdom
  • Fear will always exist, you control it or it controls you #HoskWisdom
  • Business rules and JavaScript are like electricity and water, they don’t mix well #HoskWisdom
  • I have been sent from the planet scrum to master you, now sprint you monkeys and no sitting in meetings #HoskWisdom

Want more #HoskWisdom then follow #HoskWisdom, #HoskCodeWisdom or follow @BenHosk

Articles of the week

awesome-1

I haven’t blogged for a month so there are a few articles of the week

Freeing Storage Space in Dynamics 365

Top 20 new features in Dynamics 365

Our organization is relocating – poor performance in Dublin data centre

Useful Dynamics 365 Downloads and Resources

Best of the rest

What I learnt from CRM Saturday Paddington

Microsoft releases new update for Social Engagement with Social Selling Assistant and more

Dynamics 365 new BPF architecture gotcha

Dynamics 365 Roadmap: Dynamics 365 Portals – Why You Need Them (and How to Try Them Out for Free) 

PowerApps Is A Game Changer

Recover Dynamics 365 portal fails

Leveraging Dynamics 365’s Common Data Model: An Architectural Discussion

State of Microsoft Dynamics 365 in 2017 – My Speaker Notes

Built-in Site Map Editor in Microsoft Dynamics 365 CRM 8.2

CRM Forms loading too slow: Check OUT this USEFUL list

OMG, do YOU use CRMojis?!

What You Need to Know about the Hustle and [Microsoft] Flow

Dynamics CRM Build Tools

CRM Saturday – XrmToolBox with Jonas Rapp

Microsoft Flow Can Extend Dynamics 365 more than you ever imagined

understanding your Microsoft Dynamics 365 Online Licensing Options

Integrate Power BI with Microsoft Dynamics 365

Programming/Scrum

C# Coding Conventions (C# Programming Guide)

10 golden rules for becoming a better programmer

Scaling Git (and some back story)

Continuing the evolution of the Microsoft MVP Award!

How to Measure Team Agility

Other

Bill Belichick on Super Bowl win: ‘We’re five weeks behind the other teams for 2017 season’

Reflecting On One Very, Very Strange Year At Uber

moving interview

Tribal Leadership: The Key To Building Great Teams

How to help kids fail

Bill Belichick’s Five Lessons For Innovators

Behavioural interview question

The Hosk – currently reading

The Hosk – just finished reading

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

CRM 2016 – Tips on passing the MB2-712 customization and config exam

All the CRM 2016 content to help you pass the exam

picture from here

Hosk’s Top Dynamics 365 Articles of the week – 27th January

Quotes

Quality is never an accident. It is always the result of intelligent effort. John Ruskin

#HoskWisdom Favoutes this week

  • The only limitation to what you can develop is the person developing it #HoskWisdom
  • The end always triggers a beginning #HoskWisdom
  • The pressure to make things complex will be great but you must keep it as simple as possible #HoskWisdom
  • Don’t waste words, make every one count #HoskWisdom
  • Don’t blame other people for your failures #HoskWisdom
  • Constantly talking about doing something is a barrier to doing something #HoskWisdom
  • It’s not just what you say but how you say it #HoskWisdom
  • if you tried your hardest you have nothing to regret #HoskWisdom
  • If something has no value, stop measuring it #HoskWisdom
  • Contributing to a successful team is better than achieving personal goals #HoskWisdom
  • Don’t over think and under act #HoskWisdom
  • The difficulty working with cowboy coders is dealing with the all shit that comes from their code and horses #HoskCodeWisdom
  • Increasing people on a project increases complexity of working, colloborating and communicating #HoskWisdom
  • When I see someone crying when their football team has lost, I want to tell them they need to take football more seriously #HoskWisdom
  • Respect silence, its thinking time #HoskWisdom
  • You cant solve all of life’s problems in a day but you can start with one of your own #HoskWisdom

Want more #HoskWisdom then follow #HoskWisdom or follow @BenHosk

Articles of the week

awesome-1

Using Portal Capabilities in Dynamics 365 (CRM)

Good run through portal capabilities, a detailed step by step guide

Best of the rest

The difficulties of scaled agile projects

Dynamics 365 SDK refreshed (11 January 2017)

10 Types of Dynamics 365 Project for IT Decision Makers

Getting around Delegated Admin Restrictions

Read Barcode Value Using Barcode Scanner Control in Dynamics 365

Step by Step Guide to Setting up your Dynamics 365 Portal Trial

Working with JSON objects in Dynamics CRM Plugins

Smart Buttons in the Ribbon Workbench

ALM for Microsoft Dynamics CRM 2011: CRM Solution Lifecycle Management

Everyday is a school day, yomi fields are for phonetic spelling

Programming/Scrum

5 Steps To Better Agile Retrospectives

Trello board on better retrospectives

It’s Not Just Standing Up: Patterns for Daily Standup Meetings

CannotMeasureProductivity

Other

Maker’s Schedule, Manager’s Schedule

Leadership That Gets Results

Servant leadership – the leadership theory of robert K. greenleaf

Effective Leadership Styles for Scrum Masters

Five books every ScrumMaster should read

Béla Guttmann: the mastermind who was more than just a curse

Stephen Hawking’s Productive Laziness

To Everyone Who Asks For ‘Just A Little’ Of Your Time: Here’s What It Costs To Say Yes

everything Ryan Holiday wrote in 2016

how to improve success rates in NFL drafts

David Foster Wallace: The String Theory

Great course for Scrum masters

How to build a great team and culture

The Hosk – currently reading

The Hosk – just finished reading

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

CRM 2016 – Tips on passing the MB2-712 customization and config exam

All the CRM 2013 content to help you pass the exam

#HoskCodeWisdom

When you are going through project hell, don’t stop to create the nice to have features #HoskCodeWisdom
Quick fixes are never quick and usually add technical debt, so take longer and do it properly #HoskCodeWisdom
If not managed properly, adding more people to a project can slow it down instead of speeding it up #HoskCodeWisdom
Don’t waste time adding functionality the user might like but hasn’t asked for #HoskCodeWisdom
Never optimize code unless you have to #HoskCodeWisdom
Scrum master should never have answers they should ask the team for answers #HoskCodeWisdom
Writing code is simple but writing simple code is the hardest thing you can code #HoskCodeWisdom
You need to love code with your heart and write code with your head if you want to be good programmer #HoskCodeWisdom
Creating bugs bothers good developers #HoskCodeWisdom
If you don’t find writing code fun, you will never be good developer #HoskCodeWisdom
If you don’t control technical debt, it controls you and the horse you rode in on #HoskCodeWisdom
You cannot be the master coding because some days the code wins and you lose #HoskCodeWisdom
When programmers think they are good, code will find a way for you to waste a whole day on something which doesn’t work #HoskCodeWisdom

Hosk’s Top Dynamics 365 Articles of the week – 13th January

Quotes

Positive thinking will let you use the ability which you have, and that is awesome. Zig Ziglar

#HoskWisdom Favoutes this week

  • If recruiters want to be treated with respect, they need to treat people with respect #HoskWisdom

Want more #HoskWisdom then follow #HoskWisdom or follow @BenHosk

Articles of the week

awesome-1

CRM Development hacks

great article with some great link to show all fields, enable all fields, get record guid and links to other pages such as advanced find/solutions.

Azure functions are a useful tool to learn about, to help move long running processes out from Dynamics 365

Best of the week

CRM for Dynamics 365 Top 10 New Features

Dynamics 365 – What does Include entity metadata do

Top 10 Microsoft Dynamics CRM/365 Tips from 2016

Dynamics 365 – Editable Grids

Hosk’s favourite Hosk Dynamic blog posts of 2016

Dynamics 365 – Editable Grids JavaScript Example

How to show signature accepted using Pen Control in Reports & HTML web resources – Dynamics CRM/365

The Top 10 Hosk Dynamics CRM blog posts for 2016

Learning Path authoring now available in Dynamics 365 (online)!

Business Rules – Dynamics 365

Will Dynamics 365 redesign Microsoft Dynamics CRM Online? 

XrmToolBox : Marketing List Manager Plugin

worth a read to refresh me about outer join functionality added to CRM

Replicate Microsoft Dynamics 365 (online) data to Microsoft Azure SQL Database

What’s new for developers: Microsoft Dynamics 365

Microsoft Dynamics 365 App for Field Service – A Walkthrough Tour

 Email Engagement in Dynamics 365 (CRM)

Dynamics 365 – You can’t add new forms to the appointment entity

Executing Dynamics 365 workflows from Microsoft Flow

CRM 2016 – ActivityParty and ActivityParty Lists

WHAT’S NEW IN THE DYNAMICS 365 DEVELOPER TOOLKIT

CRM 2016 – Tips on passing the MB2-712 customization and config exam

Programming

Write a Live Code Analyzer for Your API

Why “Agile” and especially Scrum are terrible

3 Strengths That Make Microsoft Corporation (MSFT) Stock A Buy Now

What are story points

too cool for school – lego kanban board

Other

 The Outrageous Cost of Skipping TDD & Code Reviews

 10 ways to better lead your agile team

Former Navy SEAL commanders explain why they still wake up at 4:30 a.m. — and why you should, too

Managing Your Boss

32 Little Rules I Follow To Live A Life That Feels Good Every Day

4 WAYS TO PUSH THROUGH ADVERSITY AND FAILURE WITHOUT EGO

The Hosk currently reading

The Hosk – just finished reading

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

CRM 2016 – Tips on passing the MB2-712 customization and config exam

All the CRM 2013 content to help you pass the exam

picture from here

Hosk’s favourite Hosk Dynamic blog posts of 2016

Start by doing what’s necessary; then do what’s possible; and suddenly you are doing the impossible. Francis of Assisi

You are always a student of Microsoft Dynamics 365 never it’s master #HoskWisdom

The minute you stop learning new Microsoft Dynamics 365 functionality, you are falling behind #HoskWisdom

I only published 63 blog posts, compared to 148 in 2015 and 220 in 2014, 455 in 2011!   Numbers don’t mean anything because it’s the quality of the content not the amount which is important.

Most of the popular blog posts were written in earlier years, this could be because these blog posts are linked to more blogs, the blog posts are better or more developers are not using the latest version of Dynamics CRM/365.  Below is a link to the most popular blog posts in 2016

The Top 10 Hosk Dynamics CRM blog posts for 2016

I thought I would share the most useful blog posts I wrote last year

  1. How to evaluate job offers for Microsoft Dynamics CRM roles 
  2. CRM 2016 – The importance of keeping the same guids between CRM instances 
  3. CRM 2016 – What’s the best way to organise solutions in Microsoft Dynamics CRM 
  4. CRM 2016 – Tips on passing the MB2-712 customization and config exam 
  5. CRM 2016 – Failed to generate excel
  6. Will Dynamics 365 redesign Microsoft Dynamics CRM Online? 
  7. In Praise of the Incomplete Dynamics 365 consultant 
  8. CRM 2016 – ActivityParty and ActivityParty Lists 
  9. What is the purpose of a CRM Practice 
  10. Extreme ownership – taking ownership for what you do 
  11. Study tips for the Scrum Certification 
  12. Looking at the ideas behind SCRUM
  13. Microsoft buys LinkedIn – What you need to know

Picture from here

Dynamics 365 – You can’t add new forms to the appointment entity

I can’t change the direction of the wind, but I can adjust my sails to always reach my destination. Jimmy Dean

Thinking is difficult, which is why most people avoid it #HoskWisdom

Just when you think you understand Dynamics 365 it bamboozles you making you think your browsers broken.  I was trying to add a form to the Appointment entity, only to find the new form button was missing.

I tried it in different browsers but the create form button on appointment was refusing to appear.  I asked another developer to add a new appointment form but the button was missing for them too.

Here is custom form with the create form button

no-create-form-1

Here is the Appointment entity and there is no create form button

no-create-form

Why?

As always we start with the CRM SDK but I couldn’t really find anything but I did find this tip of the day instead

Tip #561: Custom Activity Forms

It has this interesting information and opinion

There is no New button or Save As button that is available on the following activities:

  • Social Activity
  • Appointment
  • Recurring Appointment

This is mostly likely is due to the binding of the information on the form fields to the Outlook client for Appointments and to Microsoft Social Engagement for the Social Activity. Custom versions of the form would likely endanger the integrity of the sync.

 

This forum post discusses

Why can’t I create new forms for the Appointment activity?

I wasn’t sure the reason for not being able to add appointment forms but Outlook integration would seem the most logical.

I was thinking the problem could have been the old forms which Microsoft haven’t updated yet, discussed in this blog post

CRM 2016 – Why can’t I add a business rule to the Article entity

 

What can you do?

You can update the existing appointment form and this is a valid option but you should consider if you need to use the default appointment form and if a heavily customized appointment form will cause problems and maintenance overhead.

You could use business rules and Javascript to show/hide sections or fields on the appointment form.  Be careful with Outlook integration because new fields won’t appear on the Outlook appointment record (but will appear on the CRM appointment record).

The other option is to create a new entity.

If you are going to create a new entity it might be an activity,  read this blog post to understand what this means

Be careful making an entity an activity because it’s very difficult to add security to an activity because all activities live under the one security setting.

Creating an activity will mean it appears under activities, you must need this functionality.

Conclusion

Only being able to update the one appointment form stopped me in my tracks, what if we needed to use the appointment form in other scenarios, I would be difficult to support.

This made me pause to think if I needed the appointment functionality and when making entity changes it’s better to think longer and avoid a mistake because deleting things in Dynamics 365 is a slow painful business.  Much better to think hard and avoid creating entities incorrectly.

Dynamics 365 gives you the power to quickly and easily create entities but that doesn’t mean you should.

CRM Entity ownership – How do you decide?

Dynamics 365 – What does Include entity metadata do

 

Man’s greatness lies in his power of thought. ~ Blaise Pascal

As the functionality in Dynamics 365 grows I find there are more options and check boxes which I have no idea what they do, today I came across a check box called Include entity metadata

appointment-no-metadata-0

Dynamics 365 developers should not be comfortable using functionality you don’t fully understand because it could cause you problems later and sometimes once you enable a setting it cannot disabled, such as setting entities values

  • Business process flows
  • An entity being an activity
  • Connections
  • Queues
  • Activities

Entity ownership can cause problems when you need to apply security to organisation entity – CRM Entity ownershipHow do you decide?, you need to get the decision right first time or don’t make it organisational if you think there is a chance it will need security.

Dynamics professionals are craftsman (Are you a Dynamics Craftsman or a CRM developer?) their main tool is Microsoft Dynamics 365/CRM.  You must become a master of Dynamics 365 and understand the nuances, limitations and capabilities.

If you don’t understand certain functionality, work out how it works and the underlying logic, keep asking questions until you can explain it to someone else.

Dynamics CRM/365 developers you should use the SDK rather than Google and you should always start with SDK.

Metadata

Dynamics 365/CRM metadata has the potential to confuse people because it can prove a slippy subject for people to grasp and when explaining it you end up saying things like “it is data about data”.

To understand how metadata works in Dynamics CRM/365 read this article – CRM 2015 – Understanding CRM Metadata 

A quick explanation on field metadata such as (I am only going to list some of the more interesting fields available not all of them)

  • LogicalName
  • DisplayName
  • SchemaName
  • AttributeType
  • IsAuditEnabled
  • IsRenameable
  • IsManaged
  • IsPrimaryId

A field itself holds  a value but the metadata is

  • Display name
  • is it audited
  • is it a manged field

The metadata doesn’t affect the value of the field but it changes the way it interacts with Dynamics 365.

What is entity metadata

If there is a checkbox for entity metadata, we need to understand what metadata there is for an entity.

On the entity form in the solution, the entity metadata is all the check boxes like notes, activities, queues, access teams etc.  When this gets broken down in the solution packager to an xml file you can see all these check boxes have a field and a value.

entity-metadata

When you don’t select include metadata The entity name in the entity xml element

appointment-no-metadata

If you select to include metadata you get the metadata

<EntitySetName>appointments</EntitySetName>
<IsDuplicateCheckSupported>1</IsDuplicateCheckSupported>
<IsBusinessProcessEnabled>1</IsBusinessProcessEnabled>
<IsRequiredOffline>0</IsRequiredOffline>
<IsInteractionCentricEnabled>1</IsInteractionCentricEnabled>
<IsCollaboration>1</IsCollaboration>
<AutoRouteToOwnerQueue>0</AutoRouteToOwnerQueue>
<IsConnectionsEnabled>1</IsConnectionsEnabled>
<IsDocumentManagementEnabled>0</IsDocumentManagementEnabled>
<IsOneNoteIntegrationEnabled>0</IsOneNoteIntegrationEnabled>
<IsKnowledgeManagementEnabled>0</IsKnowledgeManagementEnabled>
<IsSLAEnabled>0</IsSLAEnabled>
<IsDocumentRecommendationsEnabled>0</IsDocumentRecommendationsEnabled>
<OwnershipTypeMask>UserOwned</OwnershipTypeMask>
<IsAuditEnabled>0</IsAuditEnabled>
<IsActivity>1</IsActivity>
<ActivityTypeMask>CommunicationActivity</ActivityTypeMask>
<IsActivityParty>0</IsActivityParty>
<IsReplicated>1</IsReplicated>
<IsReplicationUserFiltered>1</IsReplicationUserFiltered>
<IsMailMergeEnabled>0</IsMailMergeEnabled>
<IsVisibleInMobile>1</IsVisibleInMobile>
<IsVisibleInMobileClient>1</IsVisibleInMobileClient>
<IsReadOnlyInMobileClient>0</IsReadOnlyInMobileClient>
<IsOfflineInMobileClient>1</IsOfflineInMobileClient>
<DaysSinceRecordLastModified>10</DaysSinceRecordLastModified>
<MobileOfflineFilters>
&lt;fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”false”&gt;
&lt;entity name=”appointment”&gt;
&lt;filter type=”and”&gt;
&lt;condition attribute=”modifiedon” operator=”last-x-days” value=”10″/&gt;
&lt;/filter&gt;
&lt;/entity&gt;
&lt;/fetch&gt;
</MobileOfflineFilters>
<IsMapiGridEnabled>1</IsMapiGridEnabled>
<IsReadingPaneEnabled>1</IsReadingPaneEnabled>
<IsQuickCreateEnabled>0</IsQuickCreateEnabled>
<SyncToExternalSearchIndex>1</SyncToExternalSearchIndex>
<IntroducedVersion>5.0.0.0</IntroducedVersion>
<EnforceStateTransitions>0</EnforceStateTransitions>
<EntityHelpUrlEnabled>0</EntityHelpUrlEnabled>
<ChangeTrackingEnabled>1</ChangeTrackingEnabled>
<IsEnabledForExternalChannels>0</IsEnabledForExternalChannels>
<HasRelatedNotes>True</HasRelatedNotes>
</entity>

In the solution file you can also see what happens when you untick

<RootComponent type=”1″ schemaName=”appointment” behavior=”1″ />

not ticked

<RootComponent type=”1″ schemaName=”appointment” behavior=”2″ />

Why and the When?

This functionality and check box was added with the subcomponents functionality.  Before CRM 2016 you added the whole entity, forms, views and everything else to a solution file.  CRM 2016.

You can only use subcomponents if the environment you are importing your solutions to includes the metadata.

In the blog post CRM 2016What’s the best way to organise solutions in Microsoft Dynamics CRM I discuss the different ways you can organise solutions.

If you choose a base solution method, you might have solutions imported into development environments as managed (to stop dependencies being created for them).   You may then build on top of the base solution in separate environment and solution.  You could add a managed entity, bring in no existing subcomponents and only add new fields.  In this scenario you new solution wouldn’t need the entity metadata because it exists in the core solution.

Conclusion

It turned out to be obvious what was happening but it’s better to confirm you assumptions and don’t give them time to cause you problems.

Writing this post has helped me think through the process of building customisations on top of managed solutions

 

CRM 2016 – Release management, Solution packager and why you should automate your deployment

I have always found that plans are useless, but planning is indispensable.

–Dwight Eisenhower

I found this articles on Microsoft Dynamics CRM and the application life cycle, I thought I would share them.  These

Deployment best practices

The articles above got me thinking about the CRM deployments best practices but which focuses on manual deployments and the best practices involved with that.

Another consideration is organising your solutions – CRM 2016What’s the best way to organise solutions in Microsoft Dynamics CRM

make surec ustomizations are kept at a high standard

Here are a few bet practices to follow
  • ID on lookups
  • early binding
  • Unit tests
  • never change production
  • CRM Configuration mover
  • Automate where possible

Automate your deployments

When I wrote the article on deployment best practices I only worked on projects which deployed projects manually and I had no experience with the solution packager.

I believe automating the deployments would be the best practice because manual deployments are

  • Manual deployments are boring
  • Manual deployments take a lot of time
  • Manual deployments can go wrong due to use error
  • it‘s a waste of developer
  • More environments more time wasted

The question CRM developers should ask is why are most CRM projects not using the solution packager?, it‘s best practice, it saves time, fewer deployment mistakesso why isn’t it standard practice.

Companies and project managers don’t give time for the team to learn and setup the solution packager because it‘s time spent on infrastructure with no business value.  Setting up the solution packager for Dynamic CRM projects is short-term pain for long-term gain.

The solution packager allows you to commit your customisations into source control because it breaks down the customisations into xml files.

One of the reasons I moved to Capgemini is because they have a DevOps team for Dynamics CRM projects.  Capgemini focus on delivery high quality large difficult projects, to do this you need to think long-term, focus on keeping quality of customisations high, keep technical debt low and automate where you can.

Now I have worked on a project with DevOp, the solution packager, continuous integration I am of the opinion all Enterprise CRM projects should have this setup.

Having a dedicated DevOps team or someone who has learnt to use the solution packager and creating builds will help the process.  Building automated build environments takes experience and the job falls to a developer they will take time to get up to speed in the same

Benefits of the Solution Packager

The solution packager is a powerful tool which can automate importing solutions between environments but it has a number of other useful benefits.

Automated deployments

Importing solutions is a boring and time consuming which should be automated to not waste developers time, allowing developer to concentrate on creating customisations.

If you can automate a boring task then you should automate it #HoskWisdom

The solution packager enables scripted automated deployments and some other benefits

Track changes

The solution packager gives you control and visibility on what changed, who changed it, what it was for and when.  The solution packager shows CRM changes, including customisation change (form, fields, views) gives visibility of those changes.  This enables CRM developers to check in changes to tasks and stories

Data

The solution packager can be scripted and incorporated in builds using Visual studio Team Services (VSTS).  Automating the build processs allows data to be imported into different CRM environments (a step which is often missed or done incorrectly).  Automating data import keeps the guids the same between environments.  CRM 2016The importance of keeping the same guids between CRM instances

Solution Packager articles

Here is a collection of Solution packager articles if you want to learn more

Conclusion

The article started out with links to the ALM – CRM lifecycle but morphed into clarifying the purpose and benefits of using the solution packager to automate solution deployment.

The solution packager allows automated builds/continuous integration which can save time and reduce import errors.  The solution packager breaks down CRM customisation to XML files which can be checked into source control (VSTS/GIT) and linked to individual tasks and stories.

Solution packager isn’t easy to configure but the benefits are worth it, companies and projects should see it as an investment in quality, long-term benefits which pay dividends on large CRM projects.