Tuesday, May 30, 2017

Talent app in tech preview

Microsoft Dynamics 365 for Talent is scheduled for release in July 2017, but you can experience it right now with Microsoft’s technical preview.
The Talent app will be available to licence on its own or as part of the Unified Operations Plan, which includes Dynamics 365 for Finance and Operations as well as the Retail application. 

What is Dynamics 365 for Talent?

The Talent application automates and helps manage administrative workforce activities for both full-time employees and contractors. You can match employees to the jobs that optimise their interests and talents by defining and mapping skills, competencies, education, and development. Employees can identify career opportunities that can help them to fulfil their potential and goals.  

Personnel management

Dynamics 365 for Talent lets employees maintain their own data, reducing the time and effort that HR staff need to spend on routine activities, freeing up time to focus on more strategic initiatives. Intuitive, self-service pages let employees update personal information, including certifications, and helps employees monitor progress on goals and prepare for upcoming performance reviews. Approval workflows can be implemented that keep everyone informed as changes are made.  

Compensation and benefits

Manage standard compensation activities, including defining fixed and variable compensation plans, as well as spot, cyclical, short-term, or annual bonuses. You can also manage long-term incentives, such as cash awards, stock awards, and stock options.

Competencies and development

You can use competencies to compare the skills, knowledge, or abilities defined for a job with those that workers have already obtained. You can track certificates that a worker has earned, tests they have taken, and education they have completed. Managers can also examine current and future strategic needs to help their employees shape their own objectives, and then identify the training needed to develop the required competencies.

Employee and manager self-service

In a single workspace, employees can view and update their personal information, as well as see upcoming courses and reviews. Employees can view any items that have been assigned to them and review their compensation. Managers can also view their organisations from a single workspace, including summaries of their team, and they can find information related to the positions, compensation, and performance goals for each team member.

Analyse data with Power BI

Power BI provides flexible and comprehensive analysis of workforce, compensation, and training data. Each area has its own set of reports containing data visualisations that allow you to gain a deeper understanding of your human capital.

Tuesday, May 23, 2017

Codeplex site is shutting down

After almost 11 years CodePlex, is shutting down -  GitHub is the de facto place for open source sharing and most open source projects have migrated there.
Microsoft has invested in Visual Studio Team Services as its “One Engineering System” for proprietary projects, and  exposed many of key open source projects on GitHub (Visual Studio Code, TypeScript, .NET, the Cognitive Toolkit, and more).
GitHub organization now has more than 16,000 open source contributors –
Partly due to a spam epidemic over several months in 2015, as spammers sought to take advantage of the CodePlex.com and a general  in usage: as of this writing, less than 350 projects saw a source code commit in the last 30 days.
The shutdown plan
So, it’s time to say goodbye to CodePlex.  As of now its disabled the ability to create new CodePlex projects. 
In October, CodePlex will be read-only, before shutting it down completely on December 15th, 2017.
Then afinal, complete backup of the site before shutting down and decommissioning the existing CodePlex site and servers.
At that time, CodePlex.com will start serving a read-only lightweight archive that will allow you to browse through all published projects – their source code, downloads, documentation, license, and issues – as they looked when CodePlex went read-only.  You’ll also be able to download an archive file with your project contents, all in common, transferrable formats like Markdown and JSON.  Where possible, there will be redirects so that existing URLs work, or at least redirect you to the project’s new homepage on the archive. The archive will respect your “I’ve moved” setting, if you used it, to direct users to the current home of your project.
There isn’t currently any plan to have an end date for the archive.
The CodePlex Archive will allow you to download an archive file,

Sunday, May 7, 2017

Restore your data if someone accidentally deletes 1000 accounts from Dynamics 365


How do you restore your data if someone accidentally deletes 1000 accounts from Dynamics 365?

In the on-premise world, grab last night’s backup, restore it to another database, export the records and re-import.

However, that’s not as easy to do if you don’t have access to the back end.

The Basics of Backup and Restore

With the Dynamics CRM Update 1 release last summer, Microsoft added a feature to back-up your CRM Online databases every night.  

The backup works across each of the instances you are managing and it allows you to restore the backup as well.  This is a great feature addition and is well documented in this blog: https://blogs.msdn.microsoft.com/crm/2016/08/23/backup-and-restore-your-crm-online-instance/ and this TechNet article: https://technet.microsoft.com/library/mt748060.aspx

Option 1: Don’t Let Someone Accidentally Delete a Bunch of Records

The best way to avoid this situation is not to let it happen in the first place.

When you’re setting up security for your CRM modules, limit the “Delete” permissions (especially on core records like Accounts) to your System Administrator.

You can still keep your data clean by leveraging the Deactivate function on various entities and that is controlled by Write permissions, so they don’t have to have the Delete permission to Deactivate.

If you accidentally Deactivate 1000 records, then that’s an easy fix – just highlight all the records and reactivate.

In the out of the box security roles, all of them have some form of Delete permissions on Accounts (some are just User permissions, meaning they can only delete records they own). I I would argue that even Delete permissions on your own records is dangerous and I’recommend pulling that permission from all those standard roles and leaving users with the Write permissions so they can deactivate accounts but not delete.

There are many occasions where you create a dummy account in CRM and want to delete it, but let the user deactivate it and when there are too many of these, tell the sysadmin and have him/her delete those accounts.

To help protect you, CRM flashes this warning before you delete an account:







Don’t delete your account

Cascading Delete Settings

To prevent utter chaos when you allow users to delete accounts , restrict the “cascading delete” settings at the relationship level.

When you create a relationship between two entities, you can choose a “Parental” relationship (like Accounts and Contacts) or Configurable Cascading where you can choose what happens when a record is deleted.  

With custom entities  set “Restrict Delete” on the relationship with Accounts – to prevent you from being able to delete an account due to the existence of that relationship.

Summary - , please make sure you’ve modified  security to prevent accidental deletion as much as you can.

Option 2: I Didn’t Listen and Someone Blew Away 1000 Accounts, What Do I Do Now?

Rather than investing time in saying “I told you not to give them permissions to do that,” figure out what got blown away.

Generally, the perpetrator knows what they did, so ask them specifically which accounts need to come back.  If they don’t know which accounts are gone, you have to go through the steps to restore the instance to figure it out. Let’s assume we don’t know what records were deleted.

Retrieve the Backup

Typically , the standard backup occurs every 24 hours. If you were really cautious, you might taken a user-driven backup right before the user blew 1000 records with everyone else out of the system, so you could just restore that backup. That is highly unlikely, so I’m going to assume that didn’t happen. Let’s keep going assuming this was an unexpected deletion.

When you restore a backup of production, you can’t restore it directly to production – that’s a good thing.

 You will need to restore the backup into one of your sandbox instances. If you don’t have a sandbox instance, view this TechNet article, it explains how to get one.

If you need your current sandbox preserved, then you’ll need to do a user-driven backup of it and restore it.

Restore your production backup over your sandbox instance and now you’ve got your data back; however, it’s not in the right instance.

Figure Out What Needs to Be Restored

If you don’t know what was deleted, then your first step is to figure out what you need to bring back.

This can be  a big problem when you delete accounts depending on your “cascading delete” settings. When you have it set up to delete child records when an account is deleted, you also lost contacts, opportunities, activities, cases and who knows what else.

We may have 90+ entities that have a 1:N relationship with accounts, so the impact can be huge.

For simplicity sake, let’s say you lost Accounts and Contacts.

Open your account list in production and export everything out to Excel, then do the same thing in your sandbox. Dump your contacts out the same way.

If you can figure out what’s missing in Excel, that’s great. Otherwise, I to put the records in a SQL or Access database to compare the tables with a query that shows you what records are duplicated

(Once you get the data back that you need, put the records you want back into CRM into an Excel worksheet, save it as a CSV and import the accounts and contacts back into your production system. You would import the accounts first so the system will find the relationship when you import the contacts.

, if you deleted more child records, then you have to import all of those records as well.

The backup and restore features give CRM administrators the ability to restore records in the case of an accidental deletion of records. Let’s hope you don’t need to use it.

Some introductory free azure training - time get into this





This the future direction for Microsoft and its important technical staff learn to work across the azure stack
these are professional courses several hours log broke down into multiple separate sessions e.g.





15 tips for MS project


Four helpful keystrokes:

·         F3 will remove a filter.

·         The Ins key will insert blank lines.

·         The Del key will delete task lines.

·         Deleting a Summary task will delete all detail tasks within the Summary task.

2. When dragging tasks around to change location, always move tasks from the ID number on the left of the views.

3. When a start date is changed, the constraints and deadlines within the project schedule don’t adjust to the new start date.

In Project 2010 use the Move Project button on the Project ribbon to change the start date. The option to adjust the deadlines is available.

The ability to adjust deadlines isn’t available in the earlier versions of Project, but there’s a button called Adjust Dates located on the Analysis toolbar that lets you adjust the constraints to the new project start date. To remove constraints, double click on a task, click on the Advanced tab, and reset the Constraint type to As soon as possible.

4. Change Working Time allows for changing and creating calendars.

Think of this function as a way of accessing the calendars that are available to be used within the project. The calendars aren’t active until they’re assigned to a resource, to the project, or to a task. They can be copied using the Organizer into the Global.mpt for use in other projects.

5. When an alternate calendar is selected for the project calendar, the views will continue to display the Standard calendar.

To change the views to show the alternate calendar being used as the project calendar, expose a view (such as the Gantt Chart), right click in the view (right side), select non-working time, and change the calendar being shown. This change is unique per view and will need to be changed in all Gantt chart and Usage views used. You can also use this change to see a Gantt chart for an individual resource.

6. When time is a physical number of days and not working days, use elapsed time.

A 10-day duration entered “10d” will be scheduled on working days only. A task duration entered as “10 ed” will change to physical time and will include non-working time.

7. The percent complete you see on the Tracking Gantt and on the Tracking percentage buttons is percent duration complete.

There’s a second percent complete called percent work complete. When you mark a task 100 percent complete, it’s assumed that 100 percent of the work has been completed also and the Start and Finish dates will become Actual Start and Actual Finish for the task. Look at the Work table of the Gantt chart to see Work completed.

8. The best view to see slippage between baseline vs. actual work is the Detail Gantt view.

9. To combine projects on a temporary basis for reporting and linking tasks between projects, create a new window.

Open the files to be combined. There’s a New Window button on the View ribbon in Project 2010. In earlier versions click on Window | New Window. Select the files to combine and a temporary file will be opened using the standard default template with the selected files combined. Create links across the projects or filter and group for reports. Save the files changed, but don’t save the temporary file.

10. Right clicking is a way of getting to a lot of options.

You can get feature selection menus by right clicking on the Ribbon or toolbars, the timescale, in the Gantt chart, on a task, on a resource, on column titles, etc. Some options are only available from menus accessed through right clicking.

11. The best way to see everything that is going on when creating an assignment is to create an assignment from a split screen with the Gantt chart or Task Sheet above and the Task Form with the View Work or Resource Work.

This is also known as the Task Entry View. Double click on the little bar in the lower right corner of the Gantt chart view. The Task Form will appear and can be changed to show the Work, Cost, and Schedule information. Double click on the Resource Name to see the Resource data.

12. When printing Gantt charts, set up the view to the way you want to see it printed before you click Print Preview or File | Print in Project 2010.

Then go into the Print Setup settings and turn off the legend and adjust the settings.

13. When creating a work breakdown structure (WBS), indent from the top down.

When removing an indentation, work from the bottom up and outdent.

14. To alter a relationship type, add lead or lag time, and delete a relationship, double click on the link line between tasks.

15. A helpful formatting to add to the Tracking Gantt is the Status date line.

To add this line, right click in the Gantt chart, click on Gridlines. Select Status Date on the left, select a line style and color, and click OK to close the box. The Status date will be shown when it’s entered in the Project Information box in Project 2007 or by entering the Status date using the Status date button on the Project ribbon bar in Project 2010.

OData and REST and APIs for the layman -these terms are increasingly used so at least get the gist of what they mean


Let’s start with REST as I understand it:

·         REST is the underlying architectural principle of the web. The amazing thing about the web is the fact that clients (browsers) and servers can interact in complex ways without the client knowing anything beforehand about the server and the resources it hosts. So RESTful Web services are a way of providing interoperability between computer systems on the Internet.

·         REST-compliant Web services allow requesting systems to access and manipulate textual representations of Web resources using a uniform and predefined set of stateless operations.  Other forms of Web service exist, which expose their own arbitrary sets of operations such as WSDL and SOAP

(REST technology is generally preferred to the more robust Simple Object Access Protocol (SOAP) technology if only because REST leverages less bandwidth, which makes it more suitable for internet usage. )

An API for a website is code that allows two software programs to communicate with each another.

·         The API spells out the proper way for a developer to write a program that requests services from an operating system or other application.

·         With cloud use on the rise, APIs are emerging to expose web services.

·         REST is a logical choice for building APIs that allow users to connect and to interact with cloud services.

·         RESTful APIs are used by such sites as Amazon, Google, LinkedIn and Twitter.

·         A RESTful API breaks down a transaction to create a series of small modules.

·         Each module addresses a particular underlying part of the transaction.

·         This modularity provides developers with a lot of flexibility, (but it can be challenging for developers to design from scratch.)



Stateless. A stateless server is a server that treats each request as an independent transaction that is unrelated to any previous request. (nothing kept in memory which suits the way the web works).

·         The interaction of any two software programs involves keeping track of the interaction-specific data, because  each subsequent interaction may depend upon the outcome of the previous interaction. This becomes more important in distributed architectures where the client and the server do not exist physically on the same machine.

·         In two-tier architectures, the responsibility of tracking this interaction-specific data rested upon the rich clients, This was not an issue because  each client used to reside on an individual computer. However, within n-tier architectures, the state management responsibility shifts from the client to the application or the web server. This introduces the need for some middleware state management extensions, so that the server can handle multiple concurrent client requests.

·         By deferring the actual activity-specific state data to such extensions e.g. storing session data in a database in ASP .NET applications. This helps to free up the memory resources, in favor of increasing server responsiveness and the ability to entertain more client requests.

·         In a service composition, a service may need to store activity-specific data in memory while it is waiting for another service to complete its processing.

Consequently, in case of service-orientation, an efficient management of service activity related data becomes more important as service-orientation puts a lot of emphasis on service reuse.

·         The service needs to deal with managing state data, which is created as a result of interacting with a consumer program, in the context of a particular business process,  

·         But it also is used  in relation to the interactions with other types of consumer programs that are part of multiple business processes.

·         As reusability goes up, so does the overhead of managing state data.

·         The Service Statelessness principle provides guidelines in favor of making the service stateless by shifting away the state management overhead from the services to some other external architectural component. This further helps in the overall scalability of the service-oriented solution.

Azure Service Fabric simplifies writing and managing both stateless and stateful Reliable Services. It si part of the Dynamics 365 Operatissn on premise/hybdrd solution.

Reliable Services is one of the programming models available on Service Fabric. Reliable Services gives you a simple, powerful, top-level programming model to help you express what is important to your application. Reliable Services get to use the rest of the Service Fabric APIs directly



"Web resources" were first defined on the World Wide Web as documents or files identified by their URLs.

 Today those have a much more generic and abstract definition encompassing everything or every entity that can be: identified, named, addressed or handled, in any way whatsoever, on the Web.

·         In a RESTful Web service, requests made to a resource's URI will elicit a response that may be in XML, HTML, JSON or some other defined format.

·         The response may confirm that some alteration has been made to the stored resource, and it may provide hypertext links to other related resources or collections of resources.

·         Using HTTP, as is most common, the kind of operations available include those predefined by the HTTP verbs GET, POST, PUT, DELETE and so on.

·         By making use of a stateless protocol and standard operations, REST systems aim for fast performance, reliability, and the ability to grow, by re-using components that can be managed and updated, without affecting the system as a whole, even while it is running.

·         The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation. Fielding used REST to design HTTP 1.1 and Uniform Resource Identifiers (URI).

·         The term is intended to evoke an image of how a well-designed Web application behaves:

o    it is a network of Web resources (a virtual state-machine)

o    where the user progresses through the application by selecting links, such as /user/tom, and operations such as GET or DELETE (state transitions),

o   which result in the next resource (representing the next state of the application) that is being transferred to the user for their use.

·         The key constraint is that the server and client must both agree on the media used, which in the case of the web is HTML.

·         An API that adheres to the principles of REST does not require the client to know anything about the structure of the API.

·         Rather, the server needs to provide whatever information the client needs in order to interact with the service.

·         An HTML form is an example of this: The server specifies the location of the resource, and the required fields.

·         The browser doesn't know in advance where to submit the information, and it doesn't know in advance what information to submit. Both forms of information are entirely supplied by the server.

(This principle unfortunately introduces another term which is less often used  so you can look it up here its called HATEOAS: Hypermedia As The Engine Of Application State.)

So, how does this apply to HTTP, and how is it implemented?

·         HTTP is oriented around verbs and resources.

·         The two verbs in mainstream usage are GET and POST

·         However, the HTTP standard also defines several others such as PUT and DELETE.

·         These verbs are applied to resources, according to the instructions provided by the server.

·         For example, a user database that is managed by a web service.

·         Our service uses a custom hypermedia based on JSON, for which we assign the mimetype application/json+userdb

·         (There might also be an application/xml+userdb and application/whatever+userdb - many media types may be supported).

·         The client and the server are both programmed to understand this format, but they don't know anything about each other.

·         A REST API should spend almost all of its descriptive effort in defining the media type(s) used for representing resources and driving application state, or in defining extended relation names and/or hypertext-enabled mark-up for existing standard media types.

·         As the REST principles go, "Everything is a Resource".

Odata

OData (Open Data Protocol) is an OASIS standard that defines a set of best practices for building and consuming RESTful APIs.

OData helps you to focus on business logic, while building RESTful APIs , without having to worry about the various approaches to define request and response headers, status codes, HTTP methods, URL conventions, media types, payload formats, query options, etc.

·         OData also provides guidance for tracking changes, defining functions/actions for reusable procedures, and for sending asynchronous/batch requests.

·         OData RESTful APIs are easy to consume.

·         The OData metadata, is a machine-readable description of the data model of the APIs, and that enables the creation of powerful generic client proxies and tools.

To get started, take a look at Understanding OData in 6 steps. And then the Basic Tutorial, Advanced Tutorial and Postman Tutorial will provide practical samples to learn OData.
As an architecture that's built on top of the current features of the Web, RESTful APIs can also support query strings. For that, OData defines a series of system query options that can help you construct complicated queries for the resources you want.

More Than One Form Was Opened at Once for the Lookup Control

In Dynamics 365 for Finance and Operations, when subscribing to a lookup event to modify an existing lookup on a form control, you must...