Monthly Archives: July 2018

October ’18 release overview is out there

 

October release overview (probably more like a preview) is out there: https://docs.microsoft.com/en-us/business-applications-release-notes/October18/index

It’s a huge document this time, but it’s worth spending some time at least scanning through it – you will find some interesting content, such as:

  • Document management capabilities will be added to the portals
  • There will be reusable content blocks for marketing
  • Service scheduling will be powered by Universal Resource Scheduling
  • Microsoft Dynamics 365 for Finance and Operations now supports mandatory regulatory requirements in Russia (for on-premises deployment only). Just adding it here for all my Russian friends since Russia is where I came from!
  • Test automation support – looks like it’ll be there for Finance and Operations.. Not sure what it’s going to be, though I’m hoping it’s also coming to other areas later
  • Access teams will be honored in unified interface
  • Advanced Find on unified interface

Either way, just go ahead and have a look – there is no way a 238-pages long(!!) document can be reduced to a single blog post.

Unified Interface: don’t get lost in the menu – useful tooltips might be just a mouse move away

 

When working with the Unified Interface in Dynamics, we have application navigation area on the left side:

image

Ideally, Dynamics should be providing a tooltip for each of the icons in that menu. Like this:

image

However, every now and then you or your users will notice that it looks more like this:

image

You can’s see mouse pointer on the screenshots above, but, it’s positioned almost exactly the same on both of them – the only difference is that, when the tooltip shows up, the mouse, is, actually, positioned just outside of the icon (in the black area surrounding it).

So, if your users start saying that they can’t easily see the entity names since those tooltips are not showing up, just ask them to:

  • Move the mouse pointer a little outside of the icon – the tooltip should show up
  • Simply expand the navigation area:
  • image
  • So they could see entity names right in the menu:

image

Dynamics: disabling all controls for an attribute

Here is something that does not come up often.. When you have a few controls for the same attribute added to the form, using Xrm.Page.getControl(“<name>”).setDisabled won’t enable/disable all of them – it will only work for the first control on the form. At least in the 8.2 version.

If you wanted to do the same for all such controls, you might need a function like this:

function setDisabledAllControls(attribName, value)
{
      var attr = Xrm.Page.getAttribute(attribName);
      attr.controls.forEach(function(control) {
         control.setDisabled(value);
      });
}

PS. You might be asking why would anybody have more than one control for the same attribute added to the form. Well, first of all, Dynamics does not stop us from doing this, so what’s not prohibited is allowed.. and, therefore, will happen every now and then. As for the reasons, it might be more of a a user-experience feature – when there is a long form, and you need users to be aware of some particular attribute, you might want to put it in different tabs/sections on the form.

Canvas Power Apps – OneDrive spreadsheet data source. Close the Excel first!

I was listening to the PowerApps/Flow course below, and, of course, right off the bat ran into something that made me backtrack what was said in the video a few times till I finally figured out what was going wrong. Here is the course url, btw (I like the course so far, though I’m definitely making my share of newbie mistakes):

https://www.edx.org/course/developing-business-applications-power-microsoft-dat227x-0

In the PowerApps, I was supposed to create a new app connected to an excel spreadsheet stored on OneDrive. So, I was supposed to see this as a result:

image

Here is what I was actually seeing – notice how there was no data:

image

It looked like the app was working, to an extent. At least I was able to preview the app, so I tried adding a new record, and it did ask for all the right fields. But it was not willing to save my new records – there was an error (“there was a problem saving your changes. The data source may be invalid”):

image

Eventually, I realized that I should have listened to the course instructor better, and I should have closed the Excel. But, then, I would not have a reason to write this post..

Once I closed the Excel, my app just started to work:

image

So.. Close the Excel – make sure the file is not locked! Now the question is, of course, it that’s how it should be, or if it’s an issue. What if somebody wanted to have a spreadsheet updated through an app, while somebody else is still looking at it in Excel? Will follow up if I find out more (or let me know if you have an answer)

PS. Just did a quick search to see if there were issues like this.. Not 100% sure, but this one looks similar: https://powerusers.microsoft.com/t5/General-Discussion/Excel-in-Onedrive-can-t-write-file-to-souce/m-p/41473#M17162

Setting up Teams

 

I like freebies – who does not? So, now that Microsoft Teams are free, I figured I just have to have them.

(Want to have them for free, too? Just go here: https://products.office.com/en-us/microsoft-teams/free )

I mean, I did not really know much about teams – have not been using them where I work, and, while they were not free, did not feel quite compelled to give them a try.

So, just in case you happened to have the same kind of messed up setup that I do, here is how it all worked out.

To start with, I have a personal account that I normally use for everything Microsoft-related. This is what I use for my Azure portal/subscriptions, this is what I use for the community forums, etc. Sure enough, that’s what I used to set up teams. This part did work out painlessly, it was all up and running in minutes.

From there, I had a couple of questions right away:

  • If I were to use teams, I would have to be able to invite guests – people not associated with my office/azure subscriptions. Would it be possible?
  • One of the reasons to try teams (for me) was to see if I can use them to deliver interactive presentations/courses

 

As for the first question, it turned out that was not a problem at all. You just need to choose a team and use “add member” option:

image

Then type in the email address, and there you go:

image

Btw, in order to make this work for guests, if you are not using “Free” teams, make sure to enable Guest access:

https://docs.microsoft.com/en-us/microsoftteams/set-up-guests

Not big deal so far, but there seem to be a couple of caveats:

  • What it means for the guest is that, when logging in, they will have to choose which “tenant” to login to:

image

They can’t just login to multiple team “tenants” at the same time, at least not using the desktop application. Keeping in mind that some of the features of the desktop app (screen sharing, for example) are not available in the web version, this might present a bit of an issue for guests if they are, already, participating in other teams.

Will have to think about it.. Might not be a big issue, but it’s something to keep in mind.

Then there is that question of using other apps in team, and, in particular, I was looking for Microsoft Forms. Problem is, I quickly found out that I could not add Forms:

image

They were supposed to show up among the applications.. But, apparently, they were not there.

After a bit of digging I realized that Forms would not be available under my personal account since they are only included in the commercial Office 365 plans (business or enterprise). That was kind of an interesting problem.. Remember this whole setup did not even assume I’d have a work account?

Eventually, here is what worked:

    • In the Azure Active Directory, using my personal account, I had to add another user:
    • image
    • From the Microsoft perspective, this seem to have become a “work” account
    • I then used this new “work account” to get a trial of Office 365 for Business Premium. This game me Microsoft Forms. Actually, I was hoping it would work if I, then, assigned a license to my personal account.. And I was able to assign a license. But, apparently, Forms do need a “work account”, so I could not use that license.
    • Then I assigned the license to the “work account” above. And.. it did not work either. I just kept getting the error below when trying to login to Microsoft Forms

 

Your account is not enabled for Microsoft Forms

Please contact your administrator for access, or switch to an authorized account.

Technical details

Session id: fa92c13d-fe1d-4fcf-bcfa-9e815ee44605

  • There is a support article which tells us that there should be CollabDBService in Azure: https://support.office.com/en-ie/article/turn-off-or-turn-on-microsoft-forms-8dcbf3ab-f2d6-459a-b8be-8d9892132a43
  • It was not there..
  • At which point I pretty much gave up, posted a question to the support forums, and left.. Only to come back a few hours later and try it again. It was working – not under my personal account, only under my “work” account. But I was, finally, able to login to Microsoft Forms and to see them in Teams when using the work account. BTW, if you are wondering about that support article above.. I did find CollabDBService in Azure when I checked it this time around. Lesson learned – it may take some time to get everything provisioned.

 

image

So I’m good.. for the trial. But the takeaway, so far, is:

  • We can use Teams with our personal accounts – that does not seem to be a problem
  • However, if we wanted to use other applications in Teams, we would have to have them licensed. Some of them can’t be licensed using the personal plans. Which is fair, but then it all depends on how much of that additional functionality you really need with Teams, and, if you need at least some, then it may turn out that you will have to add one of the commercial Office 365 plans (even if, for the most part, you would do well with just a personal plan, so there would be some overlap.. as in my case, for example, I already have “Home” office subscription)

 

Either way, the “trial” is to be continued..

PS. A few more hours into it, and, it seems, free teams might be somewhat different from non-free teams. For example, when using “free teams”, we can manage organization right from the Teams client (at least from the desktop app). Well, if it’s a personal account we can’t do it the other way.. Which is, when using a “full version”, those settings are not even available through the client – we have to use office admin portal and/or teams admin portal. Also, if you look at the plans (again, here is the link: https://products.office.com/en-us/microsoft-teams/free ), you’ll see that some features are not available in the free version.

Dynamics implementation as beer tasting

 

Ryan Maclean made an interesting analogy in his recent post: https://ryannipper.com/2018/07/12/crm-development-as-easy-as-making-a-cup-of-tea/

I’d really recommend reading it; though I’d like to warn you right here.. after reading Ryan’s post, you may find that making tea is not ever going to be simple again.  Actually, you may feel a bit overwhelmed by the potential complexity of the tea-making processSmile

But what if, instead of documenting the process upfront, we tried a more agile/scrum approach. Try something, see if you like it, try something else, choose the best options, use what you’ve learned, and so on.

In other words, why don’t we do “Dynamics” beer tasting?

Image result for small beer tasters

(The image above was borrowed from https://hoppedla.com/blog/alhambra-hop-hunt )

Beer tasting is simple and enjoyable:

  • Order a set of testers
  • Try them one after another
  • Make a note of those you liked
  • Next time you come there, you can continue testing or you can simply order the beer you now know you’d like

 

Now imagine how something similar could be done on a Dynamics project. You are starting the project, so there is nothing certain. Nobody on the client side knows for sure what Dynamics can do, yet nobody even knows what they really want to do.. at best, there are some high-level requirements and the rest is just ideas. It’s close to a complete chaos, yet you are supposed to do something.

You are not starting from scratch, though. Dynamics comes as a product with a certain set of features. Some of them can be extremely helpful, and some of them can be.. well, counter-productive, if you just use them as is. So, start introducing those features to the client and see how the client responds, just don’t overcommit to anything.

Ask the client for a few small user stories, choose one, implement it in Dynamics, explain how it works. Pick another small story, implement it in Dynamics (try to introduce an additional feature), explain how that works. Don’t put too much time into it initially, don’t create large new entities and/or complicated workflows. Be prepared that everything you do in these first iterations will, most likely, change. Still, what you’ll be doing is extremely valuable, since you’ll be learning the business, and the client will be learning Dynamics.

A few weeks into this process, and both sides will start getting a much better idea of what and how needs to be done. Eventually, through this kind of iterative approach, you and the client, together, will find the perfect balance.. just like you will find the beer you like:

 

Image result for beer pint

(And this one is from here https://www.huffingtonpost.com/2013/10/07/michigan-pint-bill-pour-beer-_n_4057939.html )

How would you fine-tune Scrum for Dynamics?

 

First of all, you can’t, really, change Scrum framework. If you do, it’s not going to be Scrum anymore. But, since Scrum is just a framework, and a lightweight framework for that matter, it leaves the details of Scrum implementation to the Scrum teams.

Hence, there is some room there for doing things differently, and that’s what I’d call fine-tuning the Scrum. In other words, it’s not about changing the framework – it’s more like this: what is it that you would recommend any Scrum team should probably start doing when they are dealing with Dynamics?

From my standpoint, we can play with at least two attributes of Scrum framework:

  •   Development team skills
  •   The definition of Done

As far as development team skills are concerned, it should not be too surprising that everyone on the team should probably have some familiarity with Dynamics and there should be someone who really does know how Dynamics works. The exact balance of the skills will depend on other factors, but, apparently, the more work is to be done on the Dynamics side, the more Dynamics experience/skills your team should have.

The definition of Done is something more interesting.

From my personal experience, I think there is at least one issue that often gets in the way of successful implementations. In Scrum terms, I’d call it the lack of transparency, and it manifests itself in two different ways:

  • Out-of-the-box, Dynamics has a lot to offer. However, since the devil is, as usual, in the details, it’s easy to miss some of those details until they become a problem. For example, it’s easy to say that Dynamics is offering out of the box reporting, but what we should look into is whether that out-of-the-box functionality will cover what we need
  • Out of the box, Dynamics has a lot to offer. However, that means there is a learning curve, and, more often than not, that learning curve is greatly underestimated. Problem is, we can say that we don’t need to implement search because there is Advanced Find, but how do we actually ensure that Dynamics users can use Advanced Find efficiently?

So, getting back to the definition of Done.. I guess it’s only fair to say that new functionality can only be “done” when and if it can actually be utilized. And that’s not only about the functionality having been implemented and tested – it’s also about that functionality having been explained to the end users so they can start it.

You might say Scrum includes sprint review sessions where the stakeholders have an opportunity to take a look at the releaseable increment. It certainly does, but this is where the complexity of Dynamics kicks in. We can’t walk the stakeholder through everything in those sessions. For example, if there is a new entity, are we going to demonstrate each and every search/reporting scenario that involves that entity? Most likely, we will just assume that the users know that part, and so we will be losing some transparency.

To work around it, we might want to incorporate a bit of documentation into our definition of Done to clarify, for the stakeholders, what are the limitations of our solution and what are the workarounds. And, looking at it from a different standpoint, we might want to make Dynamics training for the stakeholders part of our sprints. So the definition of Done would include something about “if we are relying on a certain feature in Dynamics, we need to ensure that the stakeholders know how to use that feature”. Which, in turn might mean that, for every sprint, the dev team will have to work with the stakeholders providing them the training they need.

That might be one option for fine-tuning.. Is there anything else you would do?

Business Analysts and Scrum

Still trying to figure out some of the basics, I guess.

On a non-scrum project, we would normally have titles such as a developer, a tester, a business analyst, etc. But, since Scrum does not recognize titles within the development team, and since there are only 3 roles in Scrum, the only “role” business analysts may have in Scrum is being part of the Development Team.

So it’s neither a title, nor a role. The only other alternative seems to be that it might be a skill.

Development Teams in Scrum are supposed to be cross-functional in order to be able to deliver releasable increments, and it’s quite possible that somebody on the team could be specializing in the QA, somebody else in development, and somebody else could be specializing in the business analysis.

What would be the use of those skills, though? Traditionally business analysts are expected to create the requirements, and, in Scrum, that’s the role of the Product Owner. Scrum masters don’t do business requirements. As for the development team itself, I think there are a few activities that may require BA skills:

  • If, in the definition of Done, it’s stated, somehow, that some level of documentation has to be provided, that might be what the BA-s could be doing (although, it’s not like other team members are expected not to do it)
  • Backlog refinement process, which may take up to 10% of sprint time, assumes that some work will be done on refining the product backlog by the Development Team. So, again, that’s something business analysts could be doing. But, on the other hand, refinement is not all about business analysis – it could be about the technology, too, so other skills might be at play
  • If anything in the sprint log turns out to be unclear and/or requires clarification, I would assume BA-s might be well suited to take care of it. Although, another option(maybe even a better one) would be to say that somebody who is responsible for the sprint log item on the Development Team would be even better suited to ask for the clarifications

In either case, requirement gathering in preparation for the next sprint is not the responsibility of the Development Teams in Scrum, so this is not what a Development Team can be working on during any particular sprint.

With all those options above, maybe there is still another one, which is to not make the BA-s part of the Scrum Team (which includes the product owner, the scrum master, and the development team).

The most logical and productive placement for the BA-s in Scrum might be directly under the Product Owner, but outside of the Scrum Team. It’s the Product Owner who is responsible for the backlog, but nothing stops the product owner from delegating some of the requirement elicitation activities to others.. it’s just that, since such activities are not part of the sprint delivery, those others can’t be on the Development Team – instead, at least in this scenario, Business Analysts will probably become sort of proxy stakeholders for the team.

 

PSM I (Professional Scrum Master I)

I have to say that taking PSM I test probably produced more adrenaline within an hour (that’s how long you can spend on this test) than taking any of the Dynamics exams, but this is because Scrum is something more theoretical to me. It’s simple with Dynamics – here is how you do the plugins, here is how you do the workflows, etc. Been there done that..

Not with Scrum. I’m not, really, a Scrum master to have first-hand experience in working with multiple scrum teams, so when I’m asked how are all those people supposed to organize themselves into teams, I can only follow the guidelines defined in the framework.  And, then, hope for the best.

As you can see below, the results were not absolute this time around:

image

However, this is good enough for me to say that yes, I do understand Scrum principles – you can’t fool me nowSmile And the rest.. the rest will come.

SCRUM

 

It can’t be solely about Dynamics all the time, so how about Scrum, just for a change?

To start with, I’ve been on so many different projects, and a lot of them did claim to be following SCRUM.  But I am just starting to realize, now, how little did I know to believe that they did. Well, not that I did not have my suspicions, but still.

Either way, earlier this week we had a pretty standard lessons learned session after delivering our first release. There was some interesting feedback during the session, but I started to get a feeling that our problems could not really be that unique. Scope creep, estimates, testing, overtime.. Have not you heard of those issues on just about every project? Problem is, we were, presumably, doing SCRUM. So I ended up spending the next few days doing a bit of research on how it’s done, how the testing is done, and, eventually, what SCRUM, actually, is.

And you know what? I think it would be fun to work on a real SCRUM project. Mind you, I have not yet seen a single “real” SCRUM project. Because here is what SCRUM is (and if you used to think everyone in the world knows what scrum is in rugby, I can personally attest to it that you were wrong):

525px-ST_vs_Gloucester_-_Match_-_23

Source: https://en.wikipedia.org/wiki/Scrum_(rugby)

The way I understand it – “it’s all in, let’s get control of that ball”. Or, when it comes to the software development, “let’s get control of the project”.

Ultimately, we need this thing to work, and if that means sacrificing the documentation or changing requirements two days before the release, then so be it. Those are not the real problems even if all of us would probably prefer to avoid such scenarios. The real problem is our inability or lack of desire to recognize that those things happen because they are normal. Yes, there will be scope creep. Yes, the requirements will change. Yes, the documentation will never be detailed enough. Yes, we will never be able to provide 100% test coverage after each iteration. BUT, depending on what we value more on each particular project, we can still choose what to focus on.

Athough.. we would not have a manager to tell us what to do! Seriously. There is no “Project Manager” role on a SCRUM project.  If you think I’m making it up, have a look at the official SCRUM guide:

http://scrumguides.org/download.html

Scrum Master would help the team to overcome the obstacles, Product Owner would help the team to decide what to work on, and the team would self-organize to deliver. As far as project management is concerned.. there would be none.  In the ideal SCRUM, it seems, everyone would, basically, do their best to deliver what’s called a “product increment”, so, assuming it’s the right team with the right skills / people, every team member would be able to do what they do best, and, at the same time, to trust what others are doing.

And, if you think of it, this is where it’s almost never done right. People are hired for the specific roles based on their resumes/position requirements/salary expectations/who knows what else, whereas it would probably be better for the team members to somehow find their roles as they go. Besides, there is always some sort of project management which needs to know how the project is going, when some features are going to be delivered, why are there delays, etc. Well, if the team is doing their best, and if the product owner is working with the team on maintaining proper back log, there is no need for that – if this kind of control is present, it’s just an indication of the missing trust.

So, imagine.. you are on a team where your role is not that rigid at all and where the only real expectation is that you’ll do your best, yet the client trusts that your team can and will deliver as best as it can, so there is no unnecessary pressure or control. Isn’t it fun to be on such a team?