Review of How to Ensure Operational Governance for Microsoft Teams Session from Microsoft Ignite 2018

Microsoft Ignite was held September 24-28 in Orlando, Florida with more than 1600 sessions on all that Microsoft has to offer. This session, by Dux Raymond Sy, covered guidelines for proper governance of Microsoft Teams. Dux makes basic recommendations but cautions listeners that Azure Active Directory P1 is a requirement for some of the features he highlights.

Overall, it was an informative session. Dux does a great job explaining the relationship between Microsoft Teams and Office 365 Groups; and breaking down governance into 3 manageable areas: provisioning, operations and information cycle. Continue reading “Review of How to Ensure Operational Governance for Microsoft Teams Session from Microsoft Ignite 2018”

Employee Spotlight: Pradeep Arigue

Pradeep Arigue
Pradeep Arigue

Once the owner of a Quality Assurance business himself, Pradeep Arigue holds a Bachelors of Computer Applications, and has over 10 years’ experience in the industry. He first joined the IBS team in 2012 as a QA Analyst, eventually becoming QA Lead, and is now our QA Practice Manager.

Working onsite at client facilities in the US, Pradeep also manages the IBS offshore QA team based in Hyderabad India. When asked what he likes about working with IBS, Pradeep notes the work environment. “I love that there is always something new to learn. I consider myself very fortunate to work in a field that is always changing and growing with new technologies, capabilities and ideas.”

Initially from India, Pradeep first traveled to the US in 2014, making his 5th trip in September of 2018. Currently, he’s working with IBS’ insurance and finance clients, setting up their QA practices and creating automation proof of concepts.  When he’s not researching the latest technologies, Pradeep enjoys playing cricket and seeking out the new best Thai and Mexican restaurants he can find!

Office 365 Licensing Finally Got Me

I’ve been working in SharePoint for an eternity and in Office 365 long enough to know better yet here we are.  We had a customer request a dirt simple MS Flow to dump an Excel from SharePoint to a local file share on their network so that it could be pulled into a 3rd party tool.  We had just done something far more complex for a similar size/type of customer, so I just glanced at the Flow Pricing page to make sure the on-premises data gateway was listed for Office 365 as I’m always paranoid about licensing, sure enough it was there.  Verified permissions were good to go and I was confident we could knock this thing out in an hour…wrong! Continue reading “Office 365 Licensing Finally Got Me”

Lessons Learned from Advanced Expressions for MS Flow Session at Microsoft Business Applications Summit 2018

I didn’t actually attend the summit, but rather took advantage of the fact that Microsoft is generous enough to make all of the sessions available on-demand. The Advanced Expressions for MS Flow session, led by Stephen Siciliano, was chock-full of information on the various types of advanced expressions available in MS Flow, suggested uses for these different types, and real-world demos. Using advanced expressions can seriously kick up your MS Flow game, so I highly recommend becoming familiar with these gems.

Advanced expressions are function expressions that can be written in a compose action or inline in a conditional. When an advanced expression is written in a compose action, the result of the expression can then be used in other areas of your flow. On the other hand, if the expression is written in a conditional, the result of the expression will be used to determine to which path the flow will continue. In this case, the expression must begin with the @ character, and the expressions that can be used here include equals(), and(), or(), not(), less(), lessOrEquals(), greater(), and greaterOrEquals().

However, I may be getting ahead of myself. You may still be asking “Where do I find advanced expressions?” So, let me start there. Once you create an action, click on “Add dynamic content”, in the pop up, there are tabs for “Dynamic content” and “Expression”. Click on “Expression”. All of the advanced expressions are listed by type. They also include a short snippet description to assist you in determining what they do and how you might use them. It helps that most of their names are fairly descriptive as well.

The beauty of advanced expressions is they give you many more options for working with your data; and therefore, you can create flows that can do more for you. With advanced expressions you have the power to manipulate and generate data in the following ways:

Converting Data Types

  • MS Flow automatically converts some data types. For example, integers will automatically be converted to strings. What this means is that the data will be available both as an integer and as a string in the data content.
  • Other, less obvious, conversions can be written as an expression by the flow author. For example, if you need to convert a base64 encoded string to a string, you would use base64ToString(). There are advanced expressions for converting to string, floating point, integer, boolean, base64, Data URI, URI component, binary, array, JSON object, and XML content.

 

Working with Strings

  • There are expressions for joining two strings, concat(); extracting a chunk of a string, substring(); or replacing sections of a string, replace().
  • If you need to convert the case of a string, you can use toLower() and toUpper().
  • Finding the location of text in a string is easy with indexOf() and lastIndexOf().
  • Lastly, if you need to check if a string starts with or ends with a value, you can use startsWith() or endsWith().

 

Performing Arithmetic

  • Doing simple arithmetic, or even advanced arithmetic, can be achieved with the arithmetic expressions. These include:
    • add(), returns the result of adding two numbers
    • sub(), returns the result of subtracting two numbers
    • mul(), returns the result of multiplying two numbers
    • div(), returns the result of dividing two numbers
    • mod(), returns the remainder after dividing two numbers
  • Advanced arithmetic is possible, because you can use expressions within expressions. For example, if you want to complete a + b / c, your expression would be add(a, div(b,c)).
  • Min() and max() are expressions that return the minimum or maximum value from an array of numbers.

 

Manipulating Date/Time

  • There are a bunch of advanced expressions for manipulating date/time. These include, but are not limited to, expressions for:
    • Returning the current timestamp as a string, utcNow()
    • Adding times together, addMinutes(), addHours(), addDays(), etc
    • Converting time zones, convertTimeZone(), convertToUtc(), convertFromUtc()
    • Formatting date/time into a string, formatDateTime()
    • Returning a segment of time from a timestamp, dayOfWeek(), dayOfMonth(), etc.

 

Generating Data

  • The two most helpful examples of expressions that generate data are:
    • guid(), returns a globally unique string
    • rand(), which returns a random integer within the specified range

 

The if() expression can be helpful if you are simply trying to add styling or set a value based on a condition. You can write a simple if() expression rather than add an additional layer of conditions into the flow. Multiple layers of nested conditions can become confusing and can get short circuited if a missing property gets referenced.

Properties that are not set or return as null will cause your flow to fail. To avoid this, use the coalesce() function in conjunction with the ? character. The idea is to set a default value for the property that will be used if the property returns as null. This looks something like this: coalesce(body(‘Get_record’)?[‘content’], ‘Default Value’).

There are also some really cool advanced expressions for working with lists/arrays, and workflows. I encourage you to poke around in the Expression tab to see what else is available. In the session, Siciliano also briefly discussed asynchronous actions (using 2 triggers in the same flow), working with other flows (using the Flow Management Connector), and calling nested workflows (use this to break up larger flows into smaller chunks). As I stated earlier, this session was chock-full of information. It was well worth the time spent. I’d like to think my Flow game has been kicked up a notch as a result.

 

Potential Risks of Cloud Migration

Cloud computing has revolutionized business operations, and is becoming the nearly universal adopted model for IT infrastructure. In fact, the 2018 State of the Cloud survey found that 96% of organizations use cloud services in some form or another, providing today’s organizations with a host of benefits, including greatly reduced operational costs and increased inter-connectivity via a secured network.

However, moving from mainframe to cloud presents a variety of challenges, and many organizations still rely heavily on legacy mainframe systems and outdated technologies for a large portion of their operations. Below we’ll outline a few of the more common challenges related to full scale cloud adoption, while also providing other some potential solutions.  Continue reading “Potential Risks of Cloud Migration”

Javascript Copy to Clipboard for Excel

I recently had a requirement to “export” data shown in a table on a web page to an Excel file.  In a normal situation I’d do something server-side to generate an Excel file with the necessary data, but unfortunately this situation was not a normal. The project I was working on did not have a server-side component – it was completely client-side code – so I couldn’t just create an Excel file.  The solution I came up with was to provide a way for the users to copy the required data to their clipboard and they could then paste it into an Excel document. Continue reading “Javascript Copy to Clipboard for Excel”

WHAT’S NEW IN OFFICE 365 (SEPTEMBER 2018)

Time flies when you’re having fun and that means Ignite will be here before we know it.  As expected Microsoft has already started to lay the ground work for some of the talking points at Ignite with their feature and enhancement announcements in August and will likely continue that trend through September.

Office 365 Roadmap Transitioning to Microsoft 365 Roadmap

When Microsoft first rolled out the Microsoft 365 package (Office 365, Windows 10, and Enterprise Mobility & Security) there was a lot of confusion around what the differences were between Microsoft 365 and Office 365.  In fact, we still get questions about this regularly and with this latest change that trend is likely to tick upward.  In mid-September 2018 Microsoft will be moving the Office 365 Roadmap to a new location on the web and adding Microsoft 365 features.  Continue reading “WHAT’S NEW IN OFFICE 365 (SEPTEMBER 2018)”