Portiblog

Corporate Intranet is net een IKEA-magazijn

Een hobby kost vaak tijd, geld en in mijn geval ook ruimte. Mijn verzameling klassieke cd’s blijft groeien en overtrof inmiddels de beschikbare kastruimte. Dus op weg naar het wereldberoemde meubelwarenhuis voor een nieuwe cd-kast. En helemaal van deze tijd; vooraf via de app gecheckt of het desbetreffende artikel aanwezig was in de dichtstbijzijnde vestiging. Vervolgens mocht ik direct naar het zelfbedieningsmagazijn om de cd-kast mee te nemen. De route wees zich vanzelf en binnen 10 minuten stond ik weer buiten. Op de terugweg schoot me de volgende analogie te binnen: mijn recente bezoek aan het zelfbedieningsmagazijn is te vergelijken met het brengen van een bezoek aan het corporate Intranet.

En om maar direct met de deur in huis te vallen: helaas nog te vaak niet zo gericht en efficiënt. Het intranet van een enterprise organisatie bevat zoveel data en content dat het vinden van de juiste informatie en/of personen zoeken is naar de spreekwoordelijke spelt in de hooiberg. Privé zijn we inmiddels meer dan gewend om te zoeken via een zoekbalk. Zodra we op kantoor belanden worden we via een hiërarchische hark gevraagd de benodigde informatie op te halen. Met een negatieve zoekervaring tot gevolg: zoekresultaten blijven achter, personen zijn lastig vindbaar en informatie is vaak verouderd. read more…

Cloud Journaal – aflevering 30

Zojuist is aflevering 30 van mijn Cloud Journaal gepubliceerd op YouTube. In deze aflevering de volgende onderwerpen:

– Exporteren van e-mails met behulp van Microsoft Flow (2:01)
– Advanced Threat Protection beschikbaar voor OneDrive for Business en SharePoint (4:51)
– Verbeterde zoekcentrum in SharePoint (8:02)
– Plannen uit Microsoft Teams nu ook zichtbaar in Planner (9:50)
– Pagina statistieken op moderne SharePoint pagina’s (12:06)
– Externe gebruikers niet langer lid van Everyone en All Authenticated Users (13:51)

Bekijk aflevering 30 hier:

Productivity versus security

In dit PortiBlog gaat Bram Zegwaart, Business Consultant bij Portiva, in op adoptie van Mobile Device Management beleid en voorwaardelijke toegang tot de cloud.

Ben-Gurion Airport, het is één uur in de middag op een warme vrijdag in november. Samen met mijn collega sta ik in de wachtrij bij de securitycontrole om onszelf en onze handbaggage te laten controleren. Na een week in Tel-Aviv te hebben gezeten met ruim 20 graden overdag zijn wij weer met een vrolijk humeur op weg naar Amsterdam. Er zit geen beweging in de wachtrij en het lijkt uren te gaan duren voordat wij aan de beurt zijn. De rij wordt alsmaar langer en ondertussen zijn meerdere beveiligingsmedewerkers de “controle-lanes” aan het coördineren en aan het opvullen met steeds meer reizigers. Ons vrolijke humeur lijkt al heel snel om te slaan naar een pesthumeur omdat wij helemaal niet begrijpen waarom dit allemaal zo lang moet duren. Na 30 vervelende minuten wachten krijgen we eindelijk zicht op de beveiligers, die verschillende controles aan het uitvoeren zijn; op de handbagage via een x-ray scan, vervolgens nogmaals via een handdetector en tot slot zijn ook nog eens de schoenen aan de beurt. Naar wat blijkt, extra controle om explosief materiaal geen kans te geven.

read more…

Cloud Journaal – aflevering 29

Aflevering 29 van mijn Cloud Journaal staat klaar om bekeken te worden. Met in deze aflevering de volgende onderwerpen:

– Nieuws aanmaken vanaf de SharePoint homepage (1:56)
– SharePoint Nieuws connector voor Microsoft Teams (3:29)
– Gastgebruikers met een Microsoft Account uitnodigen in Teams (6:16)
– Maximum aantal kanalen per team van 100 naar 200 (8:04)
– Van tenant wisselen in de nieuwe iOS app van Teams (9:46)
– Gedeeld door mij weergave in OneDrive for Business (11:56)

Bekijk aflevering 29 hier:

Microsoft SharePoint 2013 mainstream support loopt af per april 2018

Microsoft SharePoint 2013 mainstream support loopt af, wat betekent dat voor uw organisatie?

Gebruikt uw organisatie op dit moment SharePoint 2013 SP1 waarvan het mainstream support vanuit Microsoft in april van dit jaar afloopt?

Dit artikel beschrijft wat u kunt ondernemen om gebruik te kunnen blijven maken van een veilig SharePoint platform, wat daarvan de noodzaak is en hoe Portiva daarbij kan helpen. read more…

Send email with multiple attachments using Microsoft Flow in Office365

What

Summary: this post will show how an Out-Of-The-Box Microsoft Flow in Office365 can send one email with a dynamic number of attachments while these attachments are stored in one or more SharePoint Online libraries.

Why

First of all let me take a moment to point out that if you have SharePoint Online –> why do you want to send an e-mail with attachment(s)??!! SharePoint stores the documents in a safe place, with version history (if enabled) and you, your colleagues and even external users (if enabled) can co-work on documents simultaneously!!

If you are working for an organization that cannot convince business owners that SharePoint in 99% of the cases does not need documents to be emailed as attachments and you really, really, really tried to show them why, let me know! I’ll see if we can arrange a job interview with Portiva #BestPlaceToWork

The other 1% could be a scenario like I had: the HR department of a big organization has a sub-department of more than 10 persons that send out packages to new colleagues weekly with a number of forms that need to be completed and sent back with a lot of accompanying documentation. Because of the big number of forms (from different sources), accompanying documentation, sub-processes and the variety of packages based on the job position –> automating these packages by e-mailing these to external e-mail addresses would be a quick win. Believe me: I really, really, really tried to convince them that other options would be a bigger win but with some customers you have to “pick your battles”.

How

It is important to show credits to the persons that started this journey and these posts will help in understanding the instructions below:

  • Sunay Vaishnav that started a post: https://flow.microsoft.com/en-us/blog/multiple-attachments-single-email/
  • Vytenis Jazbutis who corrected the post in the comments
    (TIP: always read the comments first when facing issues!)

I used this post and its comments to make these instructions and some steps are really important (not user friendly in Microsoft Flow yet) to follow to the letter.

We need the following before starting the flow:

  • A document library (could also be a list item) that triggers the Flow:

    • If you need to sent a selection of attachments, we need information on which we can filter all possible attachment(s). In my example I added a Choice Column that would contain the job position so depending on the selected job position, one would receive a specific set of attachments.
  • A document library that contains the to-be-sent attachments:

    • I used the Title column (but could be any other column off course) to determine which attachment belongs to which choice in the document library that starts the flow. These are simple text values (strings) that match the (exact same) values of the first document library choice column.
  1. Create a flow that triggers in the way that you want.
    In my case I created a flow that triggered on When a file is created or modified from the first document library.
  2. Then a step that gets all the possible attachments from the library where the to-be-sent attachments are stored (and kept up-to-date by the business). The Get files (properties only) step:

    • TIP: give each step a unique name before continuing to next steps because once a previous step is used in another step you cannot rename it. Unique step names will help in identifying the correct variable in bigger flows.
    • This step gets all the possible attachments because I filter the needed attachments in a next step. If you have a big number of files in this document library it would be wise to limit the number of results by adding a Filter Query in the ODATA syntax (there are plenty of blog posts about that option).
  3. Before we use the output of previous steps an Initialize variable step is added:

    • Initializing variable steps need to be in the main stream of the flow and this variable will be a big part of the multiple-attachments-magic.
  4. Now it gets interesting! After the step of getting all the files from the library we need to filter out the document(s) we want. You can start by adding a simple Condition step using the Title column of the attachment library:

    • Luckily for us Microsoft Flow knows that we are using a step that gets multiple files so it automatically helps us:
    • Now the step is changed to:
    • TIP: whenever you see a variable (like value or Title in the screenshot above) you can copy it and when you paste it into Notepad (or any other non-formatting application) the real “code” appears. Understanding this and practicing with the codes will create a new world of possibilities:
      • value = @body(‘Get_files_(properties_only)’)?[‘value’]
      • Title = @items(‘Apply_to_each’)?[‘Title’]
  5. Because we want to filter the documents that only have a Title containing the value of the Choice selected in the document of the library that starts the flow, we can select the Value of the Choice Column:

    • This results in the right part of the condition: @triggerBody()?[‘ChoiceDeterminingAttachments’]?[‘Value’]
    • TIP: use the search function when looking for Dynamic content because in some flows the number of variables can increase quickly.
    • TIP: check out what these basic expressions looks like in advanced mode = @contains(items(‘Apply_to_each_-_All_possible_attachments’)?[‘Title’], triggerBody()?[‘ChoiceDeterminingAttachments’]?[‘Value’])
  6. The first step to add in the If yes section of the Condition will be to get the content of the file. Because this is resided within an Apply to each step –> it will apply to each retrieved file that fits the condition above.

    • I used the Identifier of the Get files step and Flow changed it to: @items(‘Apply_to_each_-_All_possible_attachments’)?[‘{Identifier}’]
  7. The second step to add in the If yes section of the Condition will be to get the metadata of the file.

    • This is needed to get the extension of the file. I once had a flow that showed the FileNameExtension as a variable within the trigger step, but somehow this has disappeared. We need the name including extension because otherwise the attachment is sent without extension and the e-mail application does not know which application to use on which attachment; see the e-mail below with unknown-file-type icons:
  8. The third step to add in the If yes section of the Condition will be the last part of the attachment magic. It is an append to array step and because it is in the Apply for each section it will add the code for every attachment to add. We really need to pay attention because this can be confusing. The end result will be:

    • Because the $content part is not any selectable variable we start by adding the JSON part that has no variables:

{
“ContentBytes”: ,
“Name”:
}

    • Some JSON knowledge will come in handy. Please pay attention to all the accolades, comma’s and quotes. (quotes copied and pasted may need to be replaced by the correct type of quotes. Flow will show a message: “Enter a valid json.”)
    • Then we add the ContentBytes part that will be the content of the document. We need to use information from the Get file content step above (number 6) and combine it with a string (.$content) to get the desired output. Depending on how you named that step we need to add the following information as an expression:

body(‘Get_file_content_-_from_filtered_attachments’).$content

    • Note that you need to add it as an Expression using the exact naming of the Get file content step (where spaces are replaced by underscores / _ ). After you add it as an expression it will show as an expression but do not worry, because after you save the flow it will be changed to the $content variable.
    • Extra explanation about adding the ContentBytes as an Expression =
    • At last we add the Name part that will be the name of the document including the file extension:

      • Note to use the Get file metadata step (until a better option like the variable FileNameWithExtension will be available).
    • The end result when you copy the contents and paste it into Notepad:

{

“ContentBytes”: @{body(‘Get_file_content_-_from_filtered_attachments’)[‘$content’]},

“Name”: @{body(‘Get_file_metadata_-_from_filtered_attachments_for_file_extension’)?[‘Name’]}

}

  1. And last but not least we can add a Send an email step where we can use the array variable:

    • Note that you collapse the Attachment part and then add the array variable because the array contains both content and name.
  2. After we add/edit a document in the triggering library the result will be:

I know this seems a lot of work and maybe even too complicated but until this will be supported with default steps, this could be an out-of-the-box option that anyone can create!

Microsoft Flow: Check for existing items in SharePoint and configuring (Approval) timeouts

For a customer, I was asked to set up a Microsoft Flow PoC for an approval process where a SharePoint site owner must be given the option to maintain or to delete a site when that site has been marked as inactive (no activity during the last six months).

Situation

This customer uses Office Dev PnP for its site provisioning on SharePoint Online. All site requests are stored inside a SharePoint list with its status (along with other site information).

We also had a scheduled PowerShell ‘healthscript’ which checked the tenant for various possible ‘health’ issues. One of these checks was if there was no activity on the site for six months or longer. The script wrote its output to an Excel file on which we had to take manual action to contact the site owners, ask whether the site should be maintained or deleted and perform that action on the site.

We wanted to automate the process of deleting/maintaining an inactive site, so I was asked to look into a possible solution with Microsoft Flow. read more…

How to add your user profile picture to a PowerApp

Office 365 has a very distinctive look across the whole range of products. (Okay, Dynamics CRM always falls behind a bit 😉 ) It would be nice to mimic this look in your PowerApps. This way you could help user adoption because people recognize it as something familiar they already know.

Here’s a short article about adding your profile picture from your own Office 365 profile. One remark, this only works when the user has an active Exchange Online account.

So let’s start and create a new PowerApp. In this example I’ll use a blank phone app. read more…

Een trainingsapplicatie met PowerApps?

Een trainingsapplicatie met PowerApps?

PowerApps als vervanging voor InfoPath of voor registratie van gegevens via de mobiel zijn inmiddels al wat bekender aan het worden. Maar je kan PowerApps voor meer zaken gebruiken dan je denkt. Bij de RAV Brabant Midden-West-Noord, die inmiddels al een viertal PowerApps heeft draaien, zaten ze met een uitdaging. Ze zoeken een trainingsapplicatie voor een C2000 systeem. De IT manager, die inmiddels overtuigd is van het gemak en de snelheid waarmee je PowerApps kunt maken, vroeg zich af “of je PowerApps kan gebruiken voor een trainingsapplicatie”.
Na kort de eisen en wensen te hebben doorgenomen, besloten we om iteratief met Marije de ontwikkeltrainer van de RAV aan de slag te gaan, inschatting 2-3 dagen voor de bouw van een applicatie. Ter voorbereiding werden er screenshots gemaakt van het C2000 systeem. Dit systeem draait op een afgeschermd gedeelte en is niet zomaar toegankelijk. Ook is het bewuste trainingsscenario al voor 80% uitgewerkt in een Word document. Ik beschrijf het bouwproces vanaf nu met wat tijdsindicaties om aan te geven hoe snel het bouwproces gaat. read more…

Follow us on Twitter

Neem contact op

Coltbaan 4E
3439 NG Nieuwegein

+31 (0)85 - 489 1008

Meer informatie?