Saturday, December 31, 2016

SPJS Charts for SharePoint v6.0.1 BETA 2

I have fixed the bugs reported in the previous BETA 1 version and updated to BETA 2. I believe most of the issues should be addressed now, but I need some more feedback to be certain it is ready for “production”.

You find the complete change log here, and please post questions and feedback in the forum.

Happy new year!

Alexander


by Alexander Bautz via SharePoint JavaScripts

Friday, December 30, 2016

Dear Microsoft: Please Fix Retrieving SharePoint Lookup Columns with REST When the Lookup List is in Another Web

I love SharePoint. I really do. I especially love writing client side code to build awesome applications for my clients.

Today’s annoyance, though, comes while I am in the process of rewriting an application I built on SharePoint 2007, porting it to SharePoint Online in Office 365. This ought to feel like a huge leap forward technologically, and in some ways it does. I’m changing all my SOAP calls with SPServices to REST calls. I’m switching from KnockoutJS to AngularJS, which will simply perform better given the profile of the applications. (KnockoutJS was the right choice years ago when I first built the applications, but the data and feature requirements have outgrown it.)

Unfortunately, I’m running into a simple constraint that makes my life a lot harder. When I first started building these applications five years ago, I created what I’ve got to say is a very solid information architecture. It’s withstood shifting needs and requirements in the interim, and I stand by it. One of the aspects of this good information architecture is storing commonly used reference lists in the root site of the Site Collection. By creating a Site Column which is a lookup into each reference list, I can reuse those common reference values throughout my subsites.

This works great in SharePoint 2007 with SOAP calls. When I retrieve items with one of these lookup Site Columns from a list in a subsite, I simply get the ID and Title values, separated by a “;#”. However, when I try to do the same thing with “modern” REST calls, I get an error like this:

{error":
  {"code":"-1, Microsoft.SharePoint.SPException","message":
    {"lang":"en-US","value":"The field 'Recommendation' is not supported in query. The lookup list is in another web."}
  }
}

I’ve been a good team player, and I’ve suggested they fix this on the SharePoint User Voice in my suggestion Enable support for lookup columns in other webs in the REST API. The votes are up, and it’s been a while.

There’s a workaround, but it’s not very pleasant. (The easiest workaround is to simply stick with SOAP calls and SPServices – I’ve done that in several cases in other projects. But SOAP is officially “deprecated”, so…)

Here’s a specific example. The client I’m working with is in financial services, and they issue recommendations on securities. Those recommendations are very standard, and predictable: Hold, Buy, Sell, etc. In other words, perfect to store in a list in the root site called Recommendations. Why not a Managed Metadata column, you might ask? Well, I also wanted to store several other columns in the Recommendations list, like Description (e.g., “The analyst expects the security to outperform their coverage universe.”), a SortOrder value so I could rearrange the values in dropdowns using SPArrangeChoices, and several other fields which drive configuration of some reports. In other words: great information architecture. The values are all consistent across the various subsites, I store them once, etc. Nice setup.

I created a Site Column back in the beginning called Recommendation, which is a lookup into the title column of the Recommendations list (Hold, Buy, Sell, etc.). I used that Site Column in many Content Types defined on the subsite level. Those Content Types are mainly used in a list I’ll call Notes.

In SOAP with SPServices, I can make this [simplified] call:

$().SPServices.SPGetListItemsJson({
  listName: "Credit Notes",
  CAMLViewFields: "<ViewFields>" +
    "<FieldRef Name='ID'/>" +
    "<FieldRef Name='Title'/>" +
    "<FieldRef Name='Recommendation'/>" +
    "</ViewFields>",
  CAMLRowLimit: 0,
  CAMLQueryOptions: "<QueryOptions>" +
    "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" +
    "<IncludeAttachmentUrls>TRUE</IncludeAttachmentUrls>" +
    "</QueryOptions>",
  mapping: {
    ows_ID: { "mappedName": "ID", "objectType": "Counter" },
    ows_Title: { "mappedName": "Title", "objectType": "Text" },
    ows_Recommendation: { "mappedName": "Recommendation", "objectType": "Lookup" }
  }
});

This retrieves the items and returns nice JSON for me. Because Recommendation is a lookup column, it comes back as something like “1;#Buy” and that’s easy to turn into a JSON object like:

{ ID: 1, Title: "Buy" }

Easy, peasy.

However, when I try the analogous call in REST:

/_api/web/lists/getbytitle('Notes')/items?$select=ID,Title,Recommendation/Title&$expand=Recommendation

I get the error:

{error":
  {"code":"-1, Microsoft.SharePoint.SPException","message":
    {"lang":"en-US","value":"The field 'Recommendation' is not supported in query. The lookup list is in another web."}
  }
}

In other words, there’s no way to $expand the Recommendation column because it comes from an other Web, even though that is ideal information architecture!

The workaround, which André Lage (@aaclage) pointed out in my UserVoice suggestion (but I clearly didn’t get at the time), is to simply ask for the Recommendation column’s ID instead. This isn’t obvious at all:

[siteCollectionSubSiteUrl]/_api/web/lists/getbytitle('Notes')/items?$select=ID,Title,RecommendationId

This doesn’t follow the syntax we’d expect: we need to append “Id” to the end of the lookup column’s InternalName. Of course, this just gets us the ID of the item in the Recommendations list; it doesn’t fetch us the Title value, which is what we really want. Because of this, I need to do a *separate* REST call to get the items from the Recommendations list and merge the values in my client side code.

[siteCollectionRootSiteUrl]/_api/web/lists/getbytitle('Recommendations')/items?$select=ID,Title

Now, one could argue that this is more efficient. I don’t ask the server to $expand the values across thousands of notes (yes, there are way more than 5000; I’ve written enough about that lately – I may have mentioned it here and here and here and here), so it gets a break. Retrieving the 5-10 values in the reference list (in this case) is no big deal.

But I have a half dozen or so of these lookup columns to deal with in this application, which means a half dozen extra REST calls, plus the code to merge the values. More work for me, but more importantly a longer wait for the application user when they load the page. I believe that poor UX is what has doomed many a SharePoint roll out, and I loathe creating a poor UX myself. In this case, I’ll make it work, but I’d really like to see this change.


by Marc D Anderson via Marc D Anderson's Blog

Tuesday, December 27, 2016

Upgrading to SharePoint 2016

So, that time has come, SharePoint 2016 has been around for a while now, stood the test of time over the past few months and now you want to upgrade. Well where do you start?

That depends on what version you are upgrading from, 2003, 2007, 2010, 2013 or something else. Depending on the source will depend on the approach. However, understanding the options and what can and can’t be done is important for any upgrade.

So, let’s look at some of the reasons to upgrade, apart from the obvious which would be because it is new and shiny.

read more


by via SharePoint Pro

Sunday, December 18, 2016

DFFS v4.4.2.2 released

I have published a new revision of DFFS and plugins. You find the full change log here: http://ift.tt/1AglZXU

Please post any comments or questions in the forum.

Best regards,
Alexander


by Alexander Bautz via SharePoint JavaScripts

Tuesday, December 13, 2016

SHAREPOINT COMMUNITY NEWSLETTER - The holidays are coming!

Hi everyone,

The holidays are coming and the Geese are getting fat (and so will I be with all the fun and food of the season). If you are celebrating this time of the year then ....HAPPY HOLIDAYS... from all of us here :)

So what do we have in store for this week's Newsletter?

We've been really busy getting phase 1 of the brand new community ready, so keep reading to find out how to access 500+ hours of SharePoint and O365 Videos!

The Ultimate Business Decision Maker’s Guide to Hybrid SharePoint - Nick Brattoli

Check out this amazing article from Nick Brattoli, who gives a great insight into everything you need to think about when deciding if SharePoint Hybrid is something you should consider. The article also covers the main issues you should think about if you are considering to go 100% on-premises or fully into Office 365. - Read More..

[SPONSORED LINK] - **NOW Available** Deploying SharePoint 2016: Best Practices for Installing, Configuring, and Maintaining SharePoint Server 2016

Are you a SharePoint Admin that wants to learn how to properly deploy SharePoint 2016? In this book, SharePoint MVPs Vlad Catrinescu and Trevor Seward will teach you how to install and configure SharePoint 2016 in depth, and how to optimize your environment based on real world best practices. Readers will benefit from the most stable and performance driven SharePoint 2016 environments possible. Order the eBook or your hardcover copy today!

Collab365.Community - This month's most popular Videos!

We are moving ever closer to the full migration of the SharePoint Community site over into the new Collab365 Community site, and expect to fully migrate in January next year. In the meantime, we wanted to share with you some of the fantastic content that is already in place on the new site with this month's most popular videos:

1) ** Laura Rogers ** covers the creation of flows in Office 365, with integrations and specific examples of translating business process from Designer to Microsoft Flow - Here

2) ** Bill Ayers ** brings us - Git, Gulp, Grunt, Node and Code: Making Sense of the Modern SharePoint and Office 365 Development Toolkit. A fantastic title to this great session which will get you up to speed on the modern development toolkit. -Here

3) ** Richard Harbridge ** and the The Top 10 Ways To Improve Office 365 & SharePoint Adoption. Richard shares industry leading real world experience, advice and activities that other customers are leveraging to get more from O365 and drive meaningful adoption. - Here

4) ** Mark Kashman ** with SharePoint and OneDrive – reinventing content collaboration. . Mark shares mobile-first and cloud-first updates for SharePoint and OneDrive. Loads of news and demos. Take a look -Here

Are you looking for great SharePoint Intranet Templates?

Are you looking for great SharePoint Intranet Solutions ('Intranet In a Box') either for on-premises or online?...turnkey solutions for Microsoft SharePoint 2010, 2013, 2016 and online?. The Intranet templates listed here offer a range of features including company news, mobile access, multi-lingual, forms, people directory, social collaboration and much more. Take a look - Here

Where to find the Best Office 365 and SharePoint Admin Tools?

IT Administrators will find the best tools here to help with SharePoint, Azure, Office 365 and Exchange and SQL Administration. - Find out more

** Save 40% on Microsoft Press books! **

Just in time for Christmas, save 40% on some amazing Microsoft eBooks! Pssst. Hurry though, as this offer ends December 31, 2016.  - Redeem Here

That's all for this week folks, hope you enjoy all that fantastic content. Watch this space for the community migration updates as we get the community fully up and running on the new Collab365 Community site early in the New Year.


by Fraser Beadle via Everyone's Blog Posts - SharePoint Community

Monday, December 12, 2016

SPJS Charts for SharePoint v6.0.1 BETA 1

SPJS Charts for SharePoint v6.0.1 BETA 1

  • Updated the filter methods to add cascading filters. See instructions in the “Custom CAML and filter” tab in the chart config, or the user manual.
  • Fixed a bug where “Show item count below chart” could not be turned off.
  • Fixed a bug with inserting charts in a WIKI page. The charts would be added, but was invisible when editing the page. I had to make the insertion of the charts a bit more manual in WIKI pages, so you must copy  a snippet from the “Add new chart” dialog, and embed it in the WIKI page using “Embed code”. If you need to remove an “invisible” chart added in a WIKI from previous version append “?contents=1” to the URL, and remove the charts from this view.
  • Fixed a bug with using “Consume filter from list view web part” in SharePoint 2013.
  • Added back the “Show filter info below chart” option after it got lost in the update to v5.

This is currently in BETA, and you find the files here. Please post any issues of feedback in the forum.


by Alexander Bautz via SharePoint JavaScripts

Developing a Mobile Application for SharePoint

You are sitting in a meeting at work, and someone says “wouldn’t it be great if we could have a mobile application that would allow our users to complete X within SharePoint?” or was it the one where someone says “we need a SharePoint Mobile App for our site?”. If this is something that has been discussed with your organization, then I feel your pain as you try to understand why we would build mobile apps that talk to SharePoint.

read more


by via SharePoint Pro

Thursday, December 1, 2016

Getting the instance id of a running Azure Function with ExecutionContext.InvocationId

Getting the instance id of a running Azure Function with ExecutionContext.InvocationId

Recently I had a discussion about Azure Functions, the pros and cons, and running multiple instances of batch processing simultaneously.

One of the immediate questions that came up in that discussion was; In the built-in logs you see in the streaming log service or in the log console, how do you know which message comes from what invocation?

Great question, let's dig into that!

Get the Invocation Id of an instance of a Azure Function

When a Function runs, it gets a new unique identifier by default. You can see this in the invocation log:

2016-12-01T22:34:34.605 Function started (Id=6844c578-b2e5-4449-bdde-cee0273106ae)  
... 
... 
... 
2016-12-01T22:34:34.699 Function completed (Success, Id=6844c578-b2e5-4449-bdde-cee0273106ae)  

There's a guid there, which is the ID of the current instance of the function. But what if you want to use that Id in all your log messages or anywhere else you need it?

Introducing the ExecutionContext

While digging around in the Azure WebJobs SDK, I found the ExecutionContext object:

GitHub: Azure WebJobs SDK Extensions - ExecutionContext.cs

This file is very simple and has a single job. Getting the invocation id.

In your Azure Function, you can add this to your parameters like this:

public static void Run(string input, ExecutionContext exCtx, TraceWriter log)  
{
    ... your logic here...
}

Now, you can use exCtx.InvocationId from wherever you want in this method, and you'll get that unique identifier.

Here's a quick example of this in action, to distinguish multiple running functions' log messges in a stream of logs.

using System;

private static string _invocationId;  
private static TraceWriter _logger;

public static void Run(string input, ExecutionContext exCtx, TraceWriter log)  
{
    // Assign the ExecutionContext to a variable we can access later
    _invocationId = exCtx.InvocationId.ToString();

    // Assign the Log to a variable we can access later
    _logger = log;


    Log("Hello World");
    Log("This is a sample");
    Log("I hope it works!");

}

// Using this Log method instead of the log.Info message, appends the invocation id every time. (for demo purposes..)
private static void Log(string message){  
    _logger.Info($"Function-({_invocationId}): {message}");
}

Getting the instance id of a running Azure Function with ExecutionContext.InvocationId

Should you now run multiple instances of this function, you could distinguish the log messages from a big chunk of data and filter it easily. But that's just a demo use-case; If you need the Function invocation id for something, that's how you get it.

Cheers,
Tobias.


by Tobias Zimmergren via Zimmergren's thoughts on tech

Reuse your C# Script (csx) code in multiple Azure Functions

Reuse your C# Script (csx) code in multiple Azure Functions

Azure Functions hit GA (General Availability) recently. A big milestone for the Azure Functions team, and I'm happy to see that it's finally out of Preview.

Lately I've been working a lot with various parts of Azure to find the best fit for various busines cases. Functions has been one of those adventures, doing a lot of R&D around how they can be put to good use. One of the pitfalls I found early on was that I wanted to have multiple functions process different things on the same "task". With that I also had various helper methods I wanted to load in each function, but I didn't want to re-write them in each and every one of them.

With that said, this post is simply about how you can load the same code in multiple functions without having to re-invent yourself. Think of a shared C# script (csx) file as a user control or component you'd inject.

Sharing code between Azure Functions

For the sake of the sample, I've created new functions which are without the read business logic, as that would clutter the samples. As such, the samples here illustrate how you can share code between your Azure Functions only.

Create a folder for your reusable code

There's various ways to go ahead and create this shared folder. If you're developing using the CLI and file system you can do it there, or if you're developing using the browser you can easily do it from Kudu etc.

I'll show you how to creat the shared file using Kudu.

Navigate to your Azure Function app service Kudu Debug Console, which is prefixed with your function name, like this:

http://ift.tt/2gEWWXu  

Next, navigate to \home\site\wwwroot which should list your functions and the host.json file etc. Click the [+]-sign and create a new folder:

Reuse your C# Script (csx) code in multiple Azure Functions

I'm creating a folder called Shared since this is what we see as a practice from the Azure team as well. In there, I'm creating my CustomerHelper.csx file which will contain the reusable code snippets I need.

CustomerHelper.csx content

In the new file, I've added some basic sample code to illustrate the idea.

using System;

public static class CustomerHelper  
{
    public static CustomerInformation GetCustomerData(string customerId)
    {
        // NOTE: For demo purposes only...

        // Return a new CustomerInformation object, which is also in this shared file.
        return new CustomerInformation{
            CustomerName = "Sample Customer 1", 
            CustomerId = "customerid-12345", 
            CustomerAddress = "Home Sweet Home", 
            IsRecurringCustomer = true
        };
    }
}

// CustomerInformation object, in the shared file so we can access it from any function.
public class CustomerInformation  
{
    public string CustomerName { get;set; }
    public string CustomerId { get; set; }
    public string CustomerAddress { get; set; }
    public bool IsRecurringCustomer {get;set; }
}

Referencing your shared code from your Azure Functions

Great. We have a shared code snippet in our CustomerHelper.csx now, containing a simple method for getting customer details and it returns a strongly typed CustomerInformation object.

This is what one of my Azure Functions look like, simply referencing the code in the shared code file:

#load "../Shared/CustomerHelper.csx"

using System;

public static void Run(string input, TraceWriter log)  
{
    log.Info("Getting customer info...");

    var customerInfo = CustomerHelper.GetCustomerData(input);

    log.Info("==== CUSTOMER INFO ====");
    log.Info($"Customer Id: {customerInfo.CustomerId}");
    log.Info($"Customer Name: {customerInfo.CustomerName}");
    log.Info($"Customer Address: {customerInfo.CustomerAddress}");
    log.Info($"Returning Customer?: {customerInfo.IsRecurringCustomer}");
    log.Info("=======================");
}

You use the #load statement to point to your code that you want to import into this file.

Read more on C# Script and the #load statement: http://ift.tt/2gEUNvg

Running this function will show your the information in the log, as per the snippet:

2016-12-01T23:05:50.014 Function started (Id=c8f41956-b2dc-4a8c-833e-1ec341d859eb)  
2016-12-01T23:05:50.014 Getting customer info...  
2016-12-01T23:05:50.014 ==== CUSTOMER INFO ====  
2016-12-01T23:05:50.014 Customer Id: customerid-12345  
2016-12-01T23:05:50.014 Customer Name: Sample Customer 1  
2016-12-01T23:05:50.014 Customer Address: Home Sweet Home  
2016-12-01T23:05:50.014 Returning Customer?: True  
2016-12-01T23:05:50.014 =======================  
2016-12-01T23:05:50.014 Function completed (Success, Id=c8f41956-b2dc-4a8c-833e-1ec341d859eb)  

Reuse your C# Script (csx) code in multiple Azure Functions

Done! That's all there's to it. I hope it helps.

Cheers,Tobias.


by Tobias Zimmergren via Zimmergren's thoughts on tech

Pluralsight Black Friday Deal – Save $100 (33%) and invest in a brighter you.

The Pluralsight Black Friday offer has been extended until December 2nd! With Black Friday and Cyber Monday,  every company put out out some crazy deals out there for this special occasion! Luckily, Pluralsight which is one of the best online on-demand training providers is also having a super deal, allowing new and existing customers to get a 1 Year Subscription at only 199$ USD , so 100$ or 33% off!

Pluralsight Black Friday

This is a great investment to keep your skills up to date and to learn new ones! Check out the promo on the Pluralsight Website, or by clicking the big image above.  If you’re interested in learning cool stuff about Office 365 and SharePoint 2016, click on the below banners to see my latest courses on those subject! Click on the banners to go to the course page!

Planning for SharePoint Server 2016: Physical Topology and Services

SharePoint Server 2016 brings a lot of changes to the Infrastructure Architecture, with new features such as MinRole and Microsoft Identity Manager. You’ll learn how to plan your SharePoint 2016 Infrastructure to answer your business needs.

Planning for SharePoint Server 2016: Logical Architecture and Integrations

This course will teach you how to plan your SharePoint 2016 logical architecture, SharePoint farm security, and how to plan for integration with Exchange Server 2016 and Project Server 2016.

Implementing a Hybrid SharePoint 2013/2016 Infrastructure

SharePoint hybrid infrastructures are gaining popularity, so SharePoint IT professionals need to prepare. You’ll learn how to configure a hybrid infrastructure in either SharePoint 2013 or SharePoint 2016 to allow your users to be more productive.

PowerShell for Office 365

Take your Office 365 Administrator skills further by learning to automate repetitive tasks as well as access advanced settings using the magic of PowerShell.


by Vlad Catrinescu via Everyone's Blog Posts - SharePoint Community

Wednesday, November 30, 2016

Yes, Virginia, You Can Get More than 5000 SharePoint Items with REST

If you haven’t been paying any attention, you might not know that I loathe the 5000 item limit in SharePoint. I may have mentioned it here and here and here and a bunch of other places, but I’m not sure. But given it’s there, we often need to work around it.

No 5000 item limit

I’ve written this little function before, but alas today I needed it again but couldn’t find any previous incarnations. That’s what this blog is for, though: to remind me of what I’ve already done!

In this case, I’m working with AngularJS 1.x. We have several lists that are nearing the 5000 item level, and I don’t want my code to start failing when we get there. We can get as many items as we want if we make repeated calls to the same REST endpoint, watching for the __next link in the results. That __next link tells us that we haven’t gotten all of the items yet, and provides us with the link to get the next batch, based on how we’ve set top in the request.

Here’s an example. Suppose I want to get all the items from a list which contains all of the ZIP codes in the USA. I just checked, and that’s 27782 items. That’s definitely enough to make SharePoint angry at us, what with that 5000 item limit and all. Let’s not get into an argument about whether I need them all or not. Let’s just agree that I do. It’s an example, after all.

Well, if we set up our requests right, and use my handy-dandy recursive function below, we can get all of the items. First, let’s look at the setup. It should look pretty similar to anything you’ve done in an AngularJS service. I set up the request, and the success and error handlers just like I always do. Note I’m asking for the top 5000 items, using "&$top=5000" in my REST call.

self.getZIPCodes = function () {

  var deferred = $q.defer();

  var request = {
    method: 'GET',
    url: _spPageContextInfo.webAbsoluteUrl +
    "/_api/web/lists/getbytitle('ZIP Codes')/items?" +
    "$select=ID,Title" +
    "&amp;$top=5000",
    headers: {
      "Accept": "application/json; odata=nometadata"
    }
  };
  var success = function (response) {

    angular.forEach(response.value, function (obj, index) {

      self.zipCodes.push({
        ZIPCode: obj.Title
      })

    });
    deferred.resolve(self.zipCodes);
  };

  var error = function (response) {
    deferred.reject(response.data);
  };

// This is the "normal" call, which would get us up to 5000 items
// $http(request).then(success, error);

// This gets us all the items, no matter how many there are.
  self.getAllItems(request).then(success, error);

  return deferred.promise;

};

If there are fewer than 5000 items, then we don’t have a problem; the base request would return them all. Line 32 is what would do that “normal” call. Instead, I call my recursive function below, passing in the request only, even though the function can take two more arguments: results and deferred.

// Recursively get all the items in a list, even more than 5000!
self.getAllItems = function(request, results, deferred) {

  var deferred = deferred || $q.defer();
  var results = results || [];
  results.data = results.data || [];

  $http(request).then(function(response) {

    if (!results.data.d) {
      results.data = response.data;
    } else {
      results.data.d.results = results.data.d.results.concat(response.data.d.results);
    }

    if (response.data.d.__next) {
      request.url = response.data.d.__next;
      self.getAllItems(request, results, deferred);
    } else {

      deferred.resolve(results);
    }

  });

  return deferred.promise;

};

The recursive function simply keeps calling itself whenever it sees that the __next attribute of the response is present, signifying there is more data to fetch. It concatenates the data into a single array as it goes. In my example, there would be 6 calls to the REST endpoint because there are 27782 / 5000 = 5.5564 “chunks” of items.

Image from http://ift.tt/2fFHu0v

Image from http://ift.tt/2fFFS6Y

NOW, before a bunch of people get all angry at me about this, the Stan Lee rule applies here. If you have tens of thousands of items and you decide to load them all, don’t blame me if it takes a while. All those request can take a lot of time. This also isn’t just a get of of jail free card. I’m posilutely certain that if we misuse this all over the place, the data police at Microsoft will shut us down.

In actual fact, the multiple calls will be separated by short periods of time to us, which are almost eternities to today’s high-powered servers. In some cases, you might even find that batches of fewer than 5000 items may be *faster* for you.

In any case, don’t just do this willy-nilly. Also understand that my approach here isn’t as great at handling errors as the base case. Feel free to improve on it and post your improvements in the comments!


by Marc D Anderson via Marc D Anderson's Blog

Monday, November 28, 2016

DFFS v4.4.2 released

I have released a new version of DFFS to fix a few bugs, and add some enhancements. You find the complete change log here.

Please post any questions or comments in the forum.

Alexander


by Alexander Bautz via SharePoint JavaScripts

Saturday, November 26, 2016

Pluralsight Black Friday Deal – Save $100 (33%) and invest in a brighter you.

We’re now in the middle of the Black Friday & Cyber Monday weekend in North America, and every company is putting out some crazy deals out there for this special occasion! Luckily, Pluralsight which is one of the best online on-demand training providers is also having a super deal, allowing new and existing customers to get a 1 Year Subscription at only 199$ USD , so 100$ or 33% off!

Pluralsight Black Friday

This is a great investment to keep your skills up to date and to learn new ones! Check out the promo on the Pluralsight Website. If you’re interested in learning cool stuff about Office 365 and SharePoint 2016, click on the below banners to see my latest courses on those subject! Click on the banners to go to the course page!

Planning for SharePoint Server 2016: Physical Topology and Services

SharePoint Server 2016 brings a lot of changes to the Infrastructure Architecture, with new features such as MinRole and Microsoft Identity Manager. You’ll learn how to plan your SharePoint 2016 Infrastructure to answer your business needs.

Planning for SharePoint Server 2016: Logical Architecture and Integrations

This course will teach you how to plan your SharePoint 2016 logical architecture, SharePoint farm security, and how to plan for integration with Exchange Server 2016 and Project Server 2016.

Implementing a Hybrid SharePoint 2013/2016 Infrastructure

SharePoint hybrid infrastructures are gaining popularity, so SharePoint IT professionals need to prepare. You’ll learn how to configure a hybrid infrastructure in either SharePoint 2013 or SharePoint 2016 to allow your users to be more productive.

PowerShell for Office 365

Take your Office 365 Administrator skills further by learning to automate repetitive tasks as well as access advanced settings using the magic of PowerShell.

Follow me on Social Media and Share this super promotion with your friends!

Leave a comment and don’t forget to like the Absolute SharePoint Blog Page   on Facebook and to follow me on Twitter here  for the latest news and technical articles on SharePoint.  I am also a Pluralsight author, and you can view all the courses I created on my author page.

The post Pluralsight Black Friday Deal – Save $100 (33%) and invest in a brighter you. appeared first on Absolute SharePoint Blog by Vlad Catrinescu.


by Vlad Catrinescu via Absolute SharePoint Blog by Vlad Catrinescu

Unity Connect Haarlem 2016 Follow Up

Sorry it’s taken me a little while to get this post up, but I had a great time in Haarlem, The Netherlands the week before last at the Unity Connect conference. The conference is “under new management” – as it were – this year, and though I haven’t attended this particular event in the past, it’s top notch. I look forward to where George Coll (@GeorgeColl) and the other folks from Blue Whale Web (who are running the IT Unity brand now) take things.

The location was pretty amazing, as it was in the Philharmonie Haarlem. It’s a modern concert and performance venue built into a very old building (at least to us Americans!). Check out this photo of Dux Sy (@meetdux) after he presented in the main concert hall.

I delivered two sessions at the conference, and links to the two slide decks are available below.

Several people have asked about the code examples I showed. You can find the small survey in my KO SharePoint repo on Github. The Sliding Quick Launch CSS (courtesy my colleague Julie Turner [@jfj1997]) is in our Sympraxis Conference Demos repo on Github.

I also had the great pleasure of speaking at the Dutch Information Worker User Group (DIWUG) the evening before the conference started, along with Adis Jugo (@adisjugo). The slides from that talk – Creating a Great User Experience in SharePoint – are below.

20161116_214053000_ios

 


by Marc D Anderson via Marc D Anderson's Blog

Friday, November 25, 2016

How to Tackle Poor Project Communication

Every day, we communicate in person, on the phone, by email, text or online. The human brain actually evolved to favor our social nature, meaning that we are hard-wired to communicate with others. Despite our natural predisposition to social interaction, many people are poor communicators. The professional consequences of ineffectual communication are manifold: conflict with colleagues; missed business opportunities; stalled career development; stress; low morale and so on.

Poor communication is particularly damaging in the context of project management. Research conducted by the Project Management Institute (PMI) found that ineffective communication was the main contributor to project failure one-third of the time, and had a negative impact on project success more than half the time. More worrying is the finding that 56% of budgets allocated to projects are at risk due to poor communication.

Communication can make or break your project. Understanding the roots of poor communication and the impact of this risk is critical to developing a communication plan that works.

Reasons for Poor Communication

  1. We take it for granted: Communication often fails because we take it for granted. Project managers assume that communication takes place as project teams attend in-person and virtual meetings, use emails and IM, update documents and so on. In reality, fragmented communication happens in several different places. Lacking real visibility and direction, team members scramble to understand the big picture.
  2. Lack of a formal plan: PMI also notes that high-performance organizations who finished 80% of projects are twice as likely to have communication plans in place than low-performing counterparts. Without a communication plan, project contributors will not understand the objectives of the project and their role in achieving these goals. Additionally, various contributors and stakeholders will have different expectations, which can lead to conflicts and delays.
  3. Stakeholder engagement: It is estimated that 1 in 3 projects fail due to poor stakeholder engagement. Stakeholders are critical to project success; failure to communicate with stakeholders can undermine internal support for your project.

 

Consequences of Poor Communication

Poor communication can have a domino effect that results in project failure. There are several consequences of ineffective communication; here are two issues to consider.

  1. Requirements management: 47% of failed projects are linked to requirements management. Within these failed projects, 75% reported that poor communication led to misplanned requirements. This makes sense as many of tools for gathering requirements such as focus groups, meetings, and interviews rely on clear communication from both the project manager and various contributors. The knock-on effect of inadequate requirements management can include scope creep; resource shortages; solutions that do not meet the original objectives; damaged relationships with stakeholders and lost revenue.
  2. Collaboration: Collaborative project management is impossible without communication between the team! Poor communication can quickly isolate team members, who become disconnected from the purpose of the project, their roles and the value of their contributions. Work is executed in silos and conflicts quickly arise as individuals lose track of completed and upcoming tasks.

It should be pretty clear that poor communication can undermine your project in several areas. If you want to take some steps to address poor project communication, read on.


Tackle Poor Communication 

  1. Have a plan: As noted above, communication plans increase project success. A communication plan will make it easier to say the right thing in the right way to the right people using the best tools. Your plan should include what needs to be communicated, how often, channels (email, meetings etc) and individual responsibilities. Review and update your plan periodically to reflect organizational and team needs.
  2. Team Culture: A 2012 study published in the Harvard Business Review discovered that communication is the key indicator of a team’s success. Researchers found that face-to-face conversations and social interactions boosted engagement, employee satisfaction and productivity. Email and texting were the least valuable forms of communication. In one instance, scheduling the team’s coffee breaks at the same time increased employee satisfaction by 10% with an associated growth in revenue. Take a look at how your team currently engages with each other. Is email the primary communication tool? Do you have break-out areas to encourage quick conversations? Are meetings enjoyable and energizing? Cultivate a team culture that facilitates communication.
  3. Involve Stakeholders: If your organization uses particular tools and strategies to engage stakeholders, take some time to review and update these resources for maximum benefit. Lacking a formal stakeholder plan? Check out our four-step process to get started.
  4. Use software: Implementing a ‘single source of truth’ such as a SharePoint project site for the team and stakeholders will aid your communication plan. A project site makes it easy for the team to understand their responsibilities, follow agreed processes track tasks and access project updates. Live dashboards provide stakeholders with high-level data for enhanced project visibility.

Of course, having a plan and software in place will only go so far. Communication must be valued and encouraged throughout the organization and within every team. The above suggestions are a good starting point. Do you have any additional suggestions or tips?


by Ciara McDonnell via Everyone's Blog Posts - SharePoint Community

Thursday, November 24, 2016

The ultimate list of Microsoft Black Friday / Cyber Monday deals ...

Hello SharePoint people!

If you're living in the USA ... HAPPY Thanksgiving. To celebrate - we've some wonderful Microsoft Black Friday /Cyber Monday offers to get your mouth watering ... 

I am personally hovering over the buy button on the Surface! Do I need one?? No, but I WANT one!

Anyway, this is pretty much a full line up of all of Microsoft's Black Friday deals.

MICROSOFT SURFACE
=================

**Save £259.99** Surface Pro 4 Core M/i5 128GB + Type Cover + Pen from £599.99.
- http://bit.ly/2fsHQmd

**20% off** Surface Pro 4 sleeves. (From £27.96)
- http://bit.ly/2g8HHG8

**50% off** Surface 3 sleeves. (From £19.98)
- http://bit.ly/2fceRYC

Get an Xbox One S (bundles TBC) when you buy select Surface Pro 4
- http://bit.ly/2fceRYC

OFFICE OFFERS
=============
**£30 off** Office Home & Student 2016/ Mac
- http://bit.ly/2fceRYC

**£20 off** Office 365 Home Yearly Subscription
- http://bit.ly/2fceRYC

XBOX OFFERS
===========
GENERIC XBOX MESSAGE: Save up to £120 on Xbox One S. From £229.99.
- http://bit.ly/2fceRYC

FREE Controller (White/Blue) + £20 off Xbox One S Bundles (From £229.99; Save £70)
- http://bit.ly/2fceRYC

FREE Gears of War 4 + £20 off FIFA17 Xbox One S Bundle (1TB) (Now £279.99; Save £70)
- http://bit.ly/2fceRYC

FREE Forza Horizon 3 & Halo 5 + £20 off Xbox One S 500 GB (Now £229.99; Save £120)
- http://bit.ly/2fceRYC

FREE Forza Horizon 3 + £20 off Selected Xbox One S Bundles (From £229.99; Save £70)
- http://bit.ly/2fceRYC

FREE Halo 5 & Gears of War 4 + £20 off Xbox One S 1TB (Now £279.99; Save £120)
- http://bit.ly/2fceRYC

£70 off Xbox 360 500GB Forza Horizon 2
- http://bit.ly/2fJEpsp

20% off Xbox Starter Pack (Headset + Controller)
- http://bit.ly/2fcgdCz

20% off Xbox One Controllers (White/Black/Blue)
- http://bit.ly/2gks8KV

XBOX GAMES
==========
Up to £120 off Xbox Games
- http://bit.ly/2fJFTmo

50% off Gears of War 4
- http://bit.ly/2fJG4hs

Up to 75% off Halo 5 (including LE/LCE)
- http://bit.ly/2fJFTmo

Up to 63% off Forza Motorsport 5/6
- http://bit.ly/2fJFTmo

Lumia Phones
============
£50 off Lumia 950 XL + FREE Display Dock
- http://bit.ly/2gEG1HQ

Laptops/PCs
===========
Up to £100 off Laptops. From £99.99.
- http://bit.ly/2gEM4ML

20% off Laptop Sleeves and Bags
- http://bit.ly/2fWkqcL

Earphones
=========
50% off Sennheiser Sports Earphones
- http://bit.ly/2gqrkoP

Drones
======
Up to £150 off on Selected Drones
- http://bit.ly/2gqwn8K

Vector Watches
==============
Up to £94.99 off/ 30% off on Vector Smart Watches
- http://bit.ly/2g8Hi6y

Other
=====
30% off Wireless Display Adapter V2. (Now £34.99; Save £15)
- http://bit.ly/2gEMUZS

50% off Universal Mobile Keyboard (Now £29.99; Save £30)
http://bit.ly/2gkycTo


by Mark Jones via Everyone's Blog Posts - SharePoint Community

Wednesday, November 23, 2016

SPJS Charts for SharePoint v6

I have released v6.0.0  of SPJS Charts for SharePoint.

The reason for skipping to v6.0.0 for this release is that the loader has changed to ease the setup process. Unfortunately this version is NOT directly backwards compatible with v5.0.0.

This means that if you have v5 already installed, you must add v6 side-by-side and manually add new chart pages and import the “old” charts from v5.

Refer the updated user manual for details.

Please post any questions or comments in the forum.

I want to send a big thanks to Rudolf Vehring for help with testing the new version.

Alexander


by Alexander Bautz via SharePoint JavaScripts

Your new SharePoint playground

A SharePoint developer is becoming more and more a web developer. This has some big advantages but it also means that our daily work is changing a lot.
Considering all these changes it's hard to keep up with the latest technologies.

This blog will give you an overview of the technologies and tools you can no longer ignore.
The original blogpost can be found here

tweettoofast

Yeoman
The web's scaffolding tool for modern web apps.
http://yeoman.io/

Visual studio code
Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.
http://ift.tt/1KubVvS

Office UI Fabric
The official front-end framework for building experiences that fit seamlessly into Office and Office 365.
http://ift.tt/1TgwIYV

SPFx
SharePoint Framework—a Page and Part model that enables fully supported client-side development, easy integration with the Microsoft Graph and support for open source tooling.
http://ift.tt/15jsoDM

TypeScript
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
http://ift.tt/1MphRfp

NPM
NPM is the package manager for JavaScript. Find, share, and reuse packages of code from hundreds of thousands of developers — and assemble them in powerful new ways.
https://www.npmjs.com/

NodeJs
Node.js is an open-source, cross-platform JavaScript runtime environment for developing a diverse variety of tools and applications.
https://nodejs.org/

React
A JavaScript library for building user interfaces React (sometimes styled React.js or ReactJS) is an open-source JavaScript library providing a view for data rendered as HTML.
http://ift.tt/1jBdybn
http://ift.tt/1HcDTyP

NG2
Angular is a development platform for building mobile and desktop web applications.
https://angular.io/

Git
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
https://git-scm.com/

Gulp.js
Gulp is a streaming build system, by using node’s streams file manipulation is all done in memory, and a file isn’t written until you tell it to do so. Much like Grunt, Gulp is a javascript task runner. Gulp however prefers code over configuration. Being that your tasks are written in code, gulp feels more like a build framework, giving you the tools to create tasks that fit your specific needs.
http://ift.tt/1LaUl1v

ADAL
The Active Directory Authentication Library enables client application developers to easily authenticate users to cloud or on-premises Active Directory (AD), and then obtain access tokens for securing API calls.
http://ift.tt/2fSB4tO

Bower
Bower is a package manager for the web. It offers a generic, unopinionated solution to the problem of front-end package management.
https://bower.io/

Summary:

tweetnewworld

"Be curious, try things, fail fast!" - Sebastian Levert


-

Rob Lempens

Rob Lempens

Developer @ Spikes

-


by Rob Lempens via Everyone's Blog Posts - SharePoint Community

Friday, November 18, 2016

SHAREPOINT COMMUNITY NEWSLETTER - News and the Great Community Survey

Hello everyone,

Merry Christmas, or thats what it feels like I should be saying with all the Christmas TV adverts I am already seeing. Well not to worry, in this newsletter we will steer clear of Christmas and just focus on blogs, news and discussions from across the community. 

[Sponsored] - Prepare for your SharePoint & Office 365 Certifications with FREE Study Guides

Are you planning to pass a Microsoft Certification before the end of the year or is it one of your goals for 2017? Check out those free study guides by SharePoint MVP Vlad Catrinescu that include Books, Training Videos and links to TechNet, Blog Posts and everything you need to get ready for your exam! Study Guides are available for the following exams:

The Great Community Survey - Your Chance to win $100 Amazon Voucher

Following the success of our previous global surveys we are keen to find out how much has changed over the last year. There have been so many announcements and new developments this year that it can be hard to keep up. We'd love to know more about how you and your organisation are operating in this ever changing environment. 

Fill in the survey to be in with a chance of being that one lucky name that we will draw out of the hat to receive a USD $100 Amazon voucher. The Survey only contains 15 questions so should only take a couple of minutes and we will look forward to sharing the results with the community soon. 

Take the Survey HERE

More Office365 functionality with Outlook Customer Manager

Could this be a new service to help all you ISV's out there?. A CRM system that is already there in your Outlook, is it too good to be true?  Take a look HERE

Bots In Azure

The Bots are everywhere and will soon take over!! - Microsoft Azure Announces Industry’s First Cloud Bot-as-a-Service.  Find out more HERE

SharePoint Community Relaunch

Coming soon!!.... We can't tell you much about it right now, but needless to say the team are working hard on the site, and are getting very close to bringing you all the Community features and much more beside in a new nicely packaged format!!...Watch this space for announcements on the new Collab365 SharePoint Community site. 

Questions from the Community

As always I am sure our community members would really appreciate and assistance that could be given on these points: 

  • Wallace wants some help around document duplication within SharePoint -HERE
  • Mark has some authentication challenges on apps from app store. -HERE
  • Arun is interested in advice on integrating JRIA with SharePoint Online. -HERE
  • A question on SharePoint Online log-in Audits and how to do them from Paul -HERE
  • Conditional Formatting in SharePoint list - Is it possible? -HERE

That's all for this week, thanks for reading !!


by Fraser Beadle via Everyone's Blog Posts - SharePoint Community

Feature pack 1 for SharePoint server 2016 is out:

1.jpg

If you haven’t heard the news yet, Microsoft has announced the release of Feature Pack 1 for SharePoint server 2016 on November 2016 and this release brings several enhancements based on the recent innovations in Office 365. Please find the details below.

Listed below are the new capabilities that was introduced in this release:

  1. Logging of administrative actions performed in Central Administration and with Windows PowerShell.
  2. Enhancements to MinRole to support small environments.
  3. A new OneDrive for Business user experience.
  4. Custom tiles in the SharePoint app launcher.
  5. Unified auditing across site collections on-premises and in Office 365.
  6. Unified taxonomy across on-premises and Office 365.
  7. OneDrive API 2.0.

Now let’s take a look at all these capabilities in a detailed manner,

Administrative actions logging:

As SharePoint administrators we spend a considerable amount of time troubleshooting administrative changes in the on-premises environment, which can result in failure conditions or other undesired effects. So for this Microsoft has introduced more insightful, granular logging in Feature Pack 1. The Feature Pack 1 introduces the logging of common administrative actions performed in the Central Administration website and with Windows PowerShell.

MinRole enhancements:

One of the infrastructure advancements in SharePoint Server 2016 was the concept of MinRole. MinRole is designed to transform architectural guidance into code, simplifying deployment and scale with SharePoint by ensuring a request is served end-to-end by the receiving server based on the origin of the request (i.e., end user or batch processing) and role of the destination server.

MinRole was originally optimized for larger farm topologies. With four server roles, the minimal requirement for a supported MinRole configuration was a four-server farm. A farm with high availability (HA) requires two servers for each role, making eight servers the minimal requirement for a HA MinRole configuration. However, customers have reported to Microsoft that they would like to have the benefits of MinRole with smaller farm topologies too. We listened to you and enhanced MinRole to address this request.

Once the new MinRole enhancements are enabled, you will notice that two additional server roles are available: “Front-end with Distributed Cache” and “Application with Search.” The Front-end with Distributed Cache role combines the Front-end and Distributed Cache roles together, while the Application with Search role combines the Application and Search roles together. These new roles let you host a multi-server MinRole farm with just two servers or four servers with HA.

2http://ift.tt/2f71bt8 150w, http://ift.tt/2gn1d5l 300w" sizes="(max-width: 630px) 100vw, 630px" />

A new OneDrive for Business user experience:

OneDrive for Business is an integral part of Office 365 and SharePoint Server. It provides a place where you can store, share and sync your work files. OneDrive for Business makes it easy to manage and share your documents from anywhere, and work together in real-time, on your favorite devices. Feature Pack 1 brings the modern OneDrive for Business user experience to SharePoint Server 2016. The new OneDrive user experience is a Software Assurance benefit.

old-scale.pnghttp://ift.tt/2gmZVak 150w, http://ift.tt/2f76YPv 300w, http://ift.tt/2gn2Mjl 768w, http://ift.tt/2f77r41 1024w, http://ift.tt/2gn6dGM 1084w" sizes="(max-width: 863px) 100vw, 863px" />

 SharePoint App Launcher custom tiles:

The App Launcher was introduced in SharePoint Server 2016 with the ability to extend the tiles with the SharePoint Hybrid App Launcher to include apps available in Office 365. The App Launcher provides a common location to discover new apps and navigate between on-premises SharePoint and Office 365 applications. Now, in addition to native SharePoint and Office 365 apps, you can also add your own custom tiles that point to other SharePoint sites, external sites, legacy apps and more. This makes it easy to find and navigate to the relevant sites, apps and resources to do your job.

4http://ift.tt/2gmYhWi 150w, http://ift.tt/2f78NM6 300w" sizes="(max-width: 648px) 100vw, 648px" />

Hybrid capabilities:

Unified auditing—Unified auditing gives SharePoint administrators’ detailed visibility into file access activities across all site collections, on-premises and in Office 365. With unified auditing in place, the Office 365 Security and Compliance Center can provide audit logs search for your SharePoint Server 2016 on-premises audit logs in addition to Office 365 audit logs.

This hybrid auditing capability—powered by Microsoft SharePoint Insights—enters preview with Feature Pack 1. Configuration is simple: a few clicks in Hybrid Scenario Picker wizard and you’re ready to start viewing and experiencing unified auditing.

Unified taxonomy:

SharePoint’s managed metadata service application makes it possible to create a taxonomy for information architecture across site collections and web applications. With Feature Pack 1, you can implement a unified taxonomy across a SharePoint Server 2016 farm and Office 365. You can seed the term store in SharePoint Online from your on-premises term store and then manage your taxonomy in SharePoint Online. Replication to on-premises SharePoint is performed by the hybrid taxonomy feature.

Developer enhancements:

OneDrive API 2.0—The OneDrive API provides a common API for access to files located on-premises and in the Office 365 cloud. The API provides access and enables developers to build solutions that target user data stored in OneDrive for Business and SharePoint document libraries


by Vignesh Ganesan via Everyone's Blog Posts - SharePoint Community

Thursday, November 17, 2016

10 Years in SharePoint Today!

Today is my 10 year SharePoint anniversary!  Where did the time go….?  What a journey it has been.  You know how sometimes you wonder if you are on the right path, or imagine that you should be somewhere else?  I’m a serial bush baby and nature lover, so I assumed that I would only be thriving and happy when I own a nature reserve and lodge.

But you know, the Universe is a funny little place.  It opens and closes doors for you when you are on the right or wrong path. I was not convinced for a long time that I should be “doing SharePoint”, but when you take a step back and look at what’s been achieved over 10 years, you can only believe that I am indeed right where I am meant to be.  What an honour to be part of this incredible global community and a privilege to run a business that keeps and grows talent in this country.  So here goes …..

First SharePoint project – roll SharePoint out to 43 000 users! (Whaaaaaaat?)

Just under 3 years later, started a SharePoint adoption business.  My business is now over 7 years old and in that time…

Won 10 awards :

  • British Airways Business Opportunity Grant Winner in 2010
  • SharePoint MVP Award in 2011, 2012, 2013, 2014, 2015 and 2016
  • Metalogix Influencer Network Award in 2014
  • Finance Monthly CEO Award Winner in 2016
  • NSBC Top 20 Small Businesses in South Africa Award in 2016

Also a finalist in :

  • Harmon.ie Top 25 SharePoint Influencers in 2016
  • NSBC National Woman Business Champion 2016
  • NSBC National Entrepreneur Champion 2016
  • NSBC National Small Business Champion 2016

And then :

  • Wrote almost 600 blogs
  • With just over 650 000 blog hits
  • Maintain 6 social media accounts, 6 websites and 3 blogs
  • 2907 LinkedIn followers
  • 3976 Twitter followers
  • 2120 Facebook followers
  • Reached over 400 000 people with posts made in the past year alone
  • Spoken at 30 conferences and user groups in South Africa, UK, Canada, USA, Singapore and Australia
  • Reinvented the South African SharePoint community and helped grow it to the monster it is today
  • Hosted 4 SharePoint Saturdays (including the first ever all green SharePoint event in the world and raised R15 000 for rhino conversation)
  • Sponsored 11 conferences
  • Hosted and / or attended 141 user groups, including inventing a new one called SharePoint Business Workshops
  • Made new friends all over the world
  • Partnered with some big vendors in the industry on some projects
  • Designed and hosted the first ever SharePoint Awards program for South African clients
  • Co-authored a book that’s on Amazon
  • Spoken on radio twice
  • Got 2 certifications
  • Signed up 100 VIP clients, including Massmart!
  • Built and still manage a multi-million Rand intranet for Nando’s South Africa (and got a thank you letter from the CEO)
  • Changed offices 4 times and eventually got our own fully equipped training centre
  • Trained nearly 2600 people
  • Designed our own certification program
  • Expanded from being a one man band training company to a multi-million Rand full service SharePoint company with business and technical teams
  • Gained the ability to give clients value and direction within half an hour of the first meeting when they have been struggling with SharePoint for years
  • Created a business where people can invent and reinvent themselves any way they want to
  • Took 10 days leave and did not check email one single time – and the company was not only still standing, but new business was signed up
  • Ended the year being fully booked for 3 months in advance
  • And took 7 years to get the exact culture I want in my business, and boy, was it worth the wait!

While I am proud of all the awards I’ve won, I think I am the most proud to be listed as one of South Africa’s Top 20 businesses within 7 years of starting my business, because the playing field was leveled and I was up against every industry out there, not just IT.  We made Top 20 out of 6509 candidates.   That, and being able to take leave and not check emails and still have a company to come home to.🙂

Not bad for an ex Project Administrator with her first business huh.

British Airways Grant Winner

 

 

mvp-logo

 

 

metalogix-award

 

 

 

 

CEOA16-WinnersLogo

 

 

 

 

 

Lets Collaborate Top 20 Small Business in South Africa


Filed under: Leadership
by Veronique Palmer via Views from Veronique