Thrive and Timlin — A Powerful Combination for Life Sciences Organizations

We are excited to join the Thrive family!

Thrive’s recent acquisition of Timlin Enterprises is a collaboration that’s proving to be a game changer in the Managed Services Provider (MSP) ecosystem – offering an enormous opportunity and value to our customers.

This partnership is powerful and there is no other collaboration like it positively impacting and shaping the MSP landscape. The Timlin solutions added to the deep Thrive portfolio of NextGen managed services becomes an innovative vehicle to collectively create a holistic road map for our customers, which includes strategic discussions about the “big picture” of technology and services our customers depend on to achieve their goals. We understand that IT exists to enable and support the goals of the business, but it is not the driver of technology. Instead, IT contains the resources to help deliver those capabilities effectively over time and adapt to the changing needs of the business and supporting platforms like Microsoft 365.

Prior to this acquisition, our customers often had to choose an IT services provider, but then realize that their vendor lacked the capabilities to provide the business productivity and collaboration support that Timlin is known for delivering. This collaboration enables a pivotal head start for our customers as Thrive is now able to explore our customers’ IT and business needs earlier in the process of aligning with their IT service provider.

With our strong focus on Life Sciences, it is even more apparent that the rapidly changing needs of our customers, as they grow through phases of programs, could create increasing strain on their IT services provider.  A larger organization like Thrive helps to solve these issues with their investment in technology solutions and access to more resources as the customers’ needs and complexity escalates.

Thrive has built an organization focused on the people, process, and technology necessary to execute on the best possible total client experience. With the addition of Timlin, Thrive will be able to help this industry operate more efficiently, from initial Discovery through Product Commercialization and beyond, by leveraging Microsoft 365 to improve processes.

This is a really a great position for our team to be in – the opportunity to get involved with the IT and business needs much earlier in the process as we align with our customers’ IT service provider.  A solution much greater than the sum of its’ parts.

Interested in learning more? CONTACT US TODAY!
Thrive Adds Timlin Enterprises to Create Microsoft Collaboration Division

FOXBOROUGH, MA – October 7, 2020 Thrive, a premier provider of NextGen Managed Services, announces today that it has acquired Timlin Enterprises, an information technology services provider and long-time collaboration partner focusing on the Microsoft 365 platform, Teams and SharePoint. This transaction is Thrive’s first non-MSP, product-capability acquisition, greatly enhancing its existing technology portfolio by adding a proven team with expertise on Microsoft tools.

 

Timlin, headquartered in Massachusetts, has a deep bench of engineers, consultants, and business analysts spread out geographically across the United States. The company is predominantly focused upon the Life Sciences and Biotech industries, boasting an impressive clientele list, along with additional proficiency in Banking & Financial Services.

 

The acquisition of Timlin significantly expands Thrive’s Microsoft Collaboration and Digital Transformation efforts to help companies unlock the hidden value they are paying for and not utilizing within the Microsoft 365 platform, increasing employee adoption and driving productivity increases. Additional benefits include enterprise-wide governance, training, management, development, support; Teams integration and collaboration; SharePoint architecture management; SQL hosting and management; Power BI and Power Platform business process automation; and other Microsoft application management.

 

“We’re very excited to welcome Timlin to the Thrive family and create a separate Microsoft Collaboration Unit,” said Rob Stephenson, CEO of Thrive. “Timlin’s tremendous team of expert technical and consultative employees will provide a huge benefit to Thrive’s Microsoft 365 customers, enabling them to accelerate their digital transformation efforts and enhance employee productivity.”

 

“Timlin has more than 10 years of experience guiding our valued clients with Microsoft platform adoption efforts, especially in the Life Sciences sector, and we’re proud to combine our highly-skilled team, tools and insights with Thrive to enhance its industry-leading NextGen Managed Services Platform,” said Ryan Thomas, CEO of Timlin Enterprises. “Our whole team is excited to embark upon this journey and spur additional growth for Thrive, as well as to allow Timlin customers access to Thrive’s Cyber Security and Public, Private & Hybrid Cloud-focused services.”

 

Mr. Thomas, Jeff Johnson, and Joe Piccirilli will continue to oversee the management of Timlin as the Microsoft Collaboration Division of Thrive, along with their existing employees. Timlin engaged BellMark Partners as an exclusive advisor on the deal.

 

The Timlin transaction is now the eighth acquisition for Thrive since the M/C Partners investment back in 2016.

 

###

 

About Thrive

Thrive is a leading provider of NextGen managed services designed to drive business outcomes through application enablement and optimization. The company’s Thrive5 Methodology utilizes a unique combination of its Application Performance Platform and strategic services to ensure each business application takes advantage of technology that enables peak performance, scale, and the highest level of security. For more information, visit thrivenextgen.com

Thrive: LinkedIn, Twitter, Facebook, YouTube and Instagram 

 

MEDIA CONTACT:

Stephanie Farrell

Director of Corporate Marketing

617.952.0289 | sfarrell@thrivenetworks.com

 

About Timlin Enterprises

Founded in 2010, Timlin Enterprises helps clients operate as digital organizations by enabling and continuing to advance their Office 365 and SharePoint capabilities. Timlin harnesses each organization’s unique definition of digital transformation, focuses on end users as the key to adoption, leverages a proven methodology, and maintains a commitment to exceptional service delivery using only US-based resources, as proven by a 100% service retention rate.  From targeted professional services to Center of Excellence managed services they have the solutions to help organizations adopt the tools available in the Office 365 platform to keep pace with the new speed of business. For more information, visit timlinenterprises.com

 

About M/C Partners

Based in Boston, M/C Partners is a private equity firm focused on small and mid-sized businesses in the communications and technology services sectors. For more than three decades M/C Partners has invested $2.2 billion of capital in over 130 companies, leveraging its deep industry expertise to understand long-term secular trends and identify growth opportunities. The firm is currently investing its eighth fund, partnering with promising companies and empowering strong leaders to accelerate growth, optimize operations, and build long-term value. For more information, visit mcpartners.com

 

About BellMark Partners

BellMark Partners, LLC is a boutique investment banking firm providing M&A, capital raising, restructuring, and strategic advisory services to middle market companies with a particular emphasis on the Consumer, Industrial, Healthcare, and Business Services markets. Headquartered in Boston, MA with an additional office in Cleveland, OH. For more information, visit bellmarkpartners.com

Power Apps vs. SharePoint Framework for Forms

Overview

As the capabilities in the Microsoft Power Platform have matured over the last couple of years, Thrive has spent considerable time delivering business process automation solutions using the tools in the platform. With Power Apps, Power Automate, and Power BI, the platform allows us to accelerate the digital transformation process for our customers using the low-code capabilities in the platform. However, when requirements get complicated, a better approach may be to build your form using the SharePoint Framework (SPFx). This is especially true if you are dealing with large amounts of data, fast load time of the form is critical, or the UI requirements are complicated. Using SPFx does require development experience, but with the right skills, you can quickly build out custom forms that can provide a better solution.

The table below provides a detailed comparison of building your form in Power Apps versus using the SharePoint framework. We have also provided a summary of our findings at the end of this post.

Detailed Comparison

Power Apps SharePoint Framework
List Thresholds
Currently, when a list has threshold problems, there is no way to easily work around them in Power Apps. The Power Apps will immediately break if already published and will not allow you to publish or save it. All submissions will break. Structuring the data or applying filters makes it easy to work around List Thresholds and retain functionality.
Performance
Even with small-scale forms and applications, the load times for Power Apps can be relatively lengthy. Performance is exponentially better than Power Apps. Small or large applications will load quickly and navigation in large applications is also extremely fast.
Simple Forms/Applications
For forms that we just want to add a couple of easy conditionals, set up some formatting or styling, and so forth, Power Apps is probably the way to go. It requires little to no development knowledge and allows for further customizations by Power users. For simple forms or applications, we may want to stray away from an SPFx solution. The development overhead and time spent would most likely outweigh the benefits.
Large Forms/Applications
Power Apps can get very bogged down by large applications that contain paged navigation, a lot of conditions, several lookups, etc. Maintaining connections between pages, altering conditions, implementing validation, etc. becomes very difficult. Large forms and applications can be constructed to be exactly what meets the needs of the business. Inline field validation, paged navigation, conditions, etc. can all be implemented with ease. Performance is also fantastic in any SPFx application.
Dev, Test, Prod
Power Apps becomes tricky if you want to try to have a development stream. If you have a Power App that is integrated with a SharePoint list or library, it cannot be exported or migrated anywhere else. You would need to continuously rebuild the app from scratch and reconnect all data connections for this work. Canvas apps do allow for exports, but the amount of configuration required for each installation can be painstaking. Seeing as SPFx solutions are packages, they can be deployed at a tenant wide level or per site collection. This means you can easily spin up a development, test, and prod site collection and have a development stream that can publish updates to any one of these environments with ease without affecting anything you don’t want. Pipelines can be established to further simplify the development stream.
Migration
As stated in the previous point, migration can be very difficult or even impossible with Power Apps. Given the nature of SPFx solutions, migrations can happen with little to no effort moving between site collections, environment, and tenants.
Validation/Conditionals
Conditional and validation logic is certainly possible in Power Apps, but only to an extent. Certain fields do not have the innate ability to filter out things such as special characters and implementing logic to do so is tricky. In some cases, the logic may not even have the ability to be implemented. Conditionals are also implementable, but take time and can be very reliant on form loading factors. Rules were removed so there is no central location to manage all of your logic. Literally any form of conditional or validation is possible in SPFx. Real-time/async validation is implementable. Regex, string validation, number validation, etc. is all easily implementable and scalable. Conditional logic can easily hot-swap visible components to the user.
Data Connections
While data connections to other applications in Office 365 are easy enough to set up, they cause some unintended side effects that may result in an undesirable user interface. For example, if you wanted to pre-populate a Manager field in Power Apps, you can do this by adding the Office 365 Users data connection. However, when you add this data connection, it will prompt the user to allow access to this when they load the Power App. This will occur each time they load it if their cache has been cleared and in other instances as well. While data connections require a bit more set up in SPFx, they can be tailored to do exactly what you need them to do. The sign-in prompt that was mentioned in the Power Apps version of this functionality is no longer an issue. Data connections will migrate with the application should you decide to move it. By default, connections to Teams, Graph, SharePoint, and more are relatively preconfigured for you when creating an application in SPFx.
Redirects
Currently, redirecting applications on submission is not possible from Power Apps. This can cause a lot of headaches, particularly in SharePoint integrated Power Apps. Redirects are completely possible in all manners within SPFx.
SQL Connections
Connections to SQL databases are available from in Power Apps. Depending on what needs to be done with them, you may or may not want to use SPFx (driven by the complexity of the app). SQL connections are also easily implementable in SPFx. They can integrate with non-standard SQL connections such as Azure Cosmos DB, AWS, Firebase, NoSQL DBs, etc.
Customizations
Depending on what needs to be customized, you may or may not be able to complete the task in Power Apps. While they give you a wide range of customization options in Power Apps, you will still encounter some limitations in terms of styling, sizing, resolution, etc. There are essentially no limits to the customizations you can do in SPFx.
Responsiveness
While Power Apps can and will work across platforms, it still has a wide range of issues with responsiveness across browser sides. One area of note is when using People Pickers, Date Picks, and Multiple-Choice fields. These components will often be inoperable on smaller devices. In addition, embedded Power Apps will often have scrolling issues where a user cannot scroll to the very bottom of the app on smaller devices. This is currently a known issue. SPFx applications can be made to be 100% responsive across devices. In addition, SPFx grants the ability to design per device or screen size. For example, you could create a design for phones, a design for tablets, and a design for PCs all in one application.
Data Load
Data loading can be tricky in Power Apps. If you are trying to execute actions based on pre-loaded data, there is not much in terms of something asynchronous that will await the response. Many different issues can come up in things like conditions based on pre-loaded information as the information is not ready to be consumed. Data loading is no issue. Async/Await functionality is easily implementable to ensure that you have the information you need when you need it.

Summary

Use Power Apps if…
  • You do not require storing more than 5,000 records
  • The speed of the forms is not a significant consideration
  • Your forms are relatively basic, without complex repeating sections or business logic
  • You do not need to promote the forms through Development, Test, and Production environments
  • You do not have complex conditional or validation logic
  • Your forms do not need to redirect to a custom location upon completion
  • Responsive design across numerous browser configurations is not critical
  • You have power users who can maintain and modify basic forms and functionality
Use SharePoint Framework if…
  • You need to store larger amounts of data
  • Fast form load and navigation time is critical
  • There is complex logic and/or UI design involved
  • You need to support a full Software Development Lifecycle or migrate the form to various locations
  • You want complete control over the responsive design to support various browser configurations
  • Having seamless integration into Teams and/or SharePoint is important
3 Things To Do Before Building A SharePoint Intranet

An intranet is a great way to improve communication, collaboration, and knowledge sharing within your organization. 

A modern SharePoint intranet takes it a step further. By leveraging SharePoint and incorporating efficient Office 365 applications – including OneDrive, Microsoft Teams, Power BI, Yammer, Flow and PowerApps – you can dramatically improve internal communications and increase employee efficiency. 

Before your team can fully realize the benefits of a modern SharePoint intranet though, you need to build it properly. We put together some tips to help you get started. 

1. Identify The Purpose For Building A SharePoint Intranet

Before you start building your SharePoint intranet, it’s important to identify the key business use cases for which it will be used. Ask these questions as you start the project: 

  • What are some of the outcomes your organization aims to achieve once the intranet is in use? 
  • Which kind of intranet is best for your use cases — a hub site? Communicate site? Or team site? 
  • Which departments will be using it? HR? Finance? Internal Comms/PR? Everyone?
  • What information and applications do users access on a regular basis? Calendars? Tasks? Reporting?

It’s imperative that the use of the SharePoint intranet is aligned with the needs of the business. IT can no longer stand-alone.  An intranet should be driven by the user community with input from all key departments (Marketing, HR, Legal, Finance, C-Level, and Communications).

A solid commitment to business and IT alignment, where you include all your IT and business stakeholders, is critical for success and user adoption.

Before building your intranet, set meetings for planning and discussions to pinpoint the purpose then to align all parties involved in the process. By understanding your stakeholders’ specific requirements and clearly communicating why an intranet will benefit them, you will be on the right path to better collaboration and buy-in.



2. Focus On Functionality And Usability

One of the strengths of a SharePoint intranet is how visually pleasing you can make the site. It can look like an actual website that people want to visit every day! 

However, a ‘Build it and they will come’ perspective doesn’t work with this type of solution.

While you’re in the planning stage of your project, consider the various use cases of your employees who will be using the SharePoint intranet. What content and applications will they access? How can the intranet be personalized to each employee? 

That’s why it’s critical to speak with stakeholders and employees who will be using the tool daily. Think about the type of content you will be presenting and make sure you have the stakeholders in place to ensure your content will remain fresh with constant ongoing updates. 

How will the pages be structured? How will users navigate? How can we make it easier to find information? 

Gathering answers and mapping your project plan to these use cases should be your top priorities. Focus more on the functionality at the beginning of the intranet build project and incorporate visual branding elements later.

Intranets vary by customer, but consider if/how you may want to use some of these components:

  • News
  • Quick links
  • Social Features
  • People Search
  • Social Features
  • Calendars and Events
  • Company Classifieds
  • Employee Directory / Organization Chart
  • Business Process Automation (Expenses, Vacations/ time off, Onboarding, etc.)

3. Nail Your Information Architecture

It’s not the most exciting aspect of building a SharePoint intranet, but ensuring you have a well-defined information architecture (IA) and site structure is crucial to success. 

When applied intelligently, the right IA combined with structured metadata helps your employees find documents faster using SharePoint’s powerful search engine. However, if it’s overly complicated to add metadata, or your chosen terms are too vague, then employees will give up on their search and will revert to their old habits of using the wrong tools to find information or to collaborate. 

Want More? 

Our team mapped four more best practices for you to follow and implement when building a SharePoint intranet. Get access to them here in this free guide.

Bottom Line On Building An Intranet

With a solid plan in place, building your modern SharePoint intranet can be an easy and seamless process, and you’re on the road to improved communications, collaboration, and operations.

Download the full, free guide of best practices for building a modern SharePoint intranet for your organization. 

And let us know if you have any questions or need any help.

How to Create Filtered Relational Drop-downs with Choices in PowerApps

Relational drop-downs are something that come up quite frequently but aren’t always straight forward.

PowerApps gives you a relatively friendly manner of creating simple relational drop-downs when using the “Depends On” functionality but this falls apart when utilizing anything but simple fields (text, number, etc.) and trying to further drill down into filtered results. You may have noticed that when you start trying to use Choice fields to filter your drop-downs on, it is not inherently possible.

In our example, we will work off a mock Products list in SharePoint. The SharePoint Products list will be made up of the following columns (yours can vary):

  • Product Type – Choice field – Choices: HDD, CPU
  • Title – Text (Product Name)
  • Manufacturer – Choice field – Choices: Timlin, Generic
  • Configuration – Choice field – Choices: 250GB, 500GB, x1, x2

Below is a screenshot of how this list looks and some sample data we have input for testing.

Once your list is setup, we can hop straight into PowerApps. If you aren’t familiar with how to get started, simply click on the “PowerApps” button followed by the “Customize Forms” button.

We arranged our fields in the PowerApp to go in the following order: Product Type, Manufacturer, Configuration and Title.

The end goal of this is to have it so the end-user will go through the menu one by one and be provided a final filtered list of products that follow the selected Type, Manufacturer, and Configuration.

You might notice from the screenshot of the layout of the PowerApp above that there are duplicate fields. The reason for this is that the more advanced filtering we will be doing on the fields does not work when using the out of the box choices column in PowerApps.

To circumvent this, we unlock each of these data cards and add a “Dropdown” control (to make things easier, set “AllowEmptyField” to true in the properties of each drop-down we add).

Currently, the fields are disabled just as a visual aid but in normal circumstances, you can set the value of the fields to the value of the drop-down and have them hidden in the background so nothing is visually different to the end-user. In our example, Product Type won’t need to be filtered in any way so we can leave that card alone.

Our options in Product Type are CPU and HDD.

In this instance and given the sample data above, when we select “CPU” we will want to see both the Timlin and Generic manufacturers (we will filter this even though each manufacturer has a CPU, there will be instances in production where a manufacturer will exist that does not offer a CPU product).

To filter the Manufacturer drop-down based on the Product Type, we can set it’s “Items” property to the following formula (keep in mind that the numbers or names of the Data Cards may vary on your application):

Distinct(Filter(Products, ‘Product Type’.Value = DataCardValue2.Selected.Value),Manufacturer.Value) – DataCardValue2 is associated with Product Type

Using the “Distinct” operation, we ensure that we do not pull back the same manufacturer more than once. The second parameter following the filter (Manufacturer.Value) is the return value, which in this case is the Manufacturer value that we want.

The Filter operation is ensuring that we are only getting products in the list that match the product type we selected in the first field. One other thing we want to do on this drop-down is to set up a variable that stores the filtered results so we can easily filter our next field. To do so, we can change the “On Change” operation to the following formula:

Set(ManufacturerFilteredProducts, Filter(Products, Manufacturer.Value = DataCardValue4.Selected.Value)) – DataCardValue4 is associated with Manufacturer

This will provide us with the list of products we have filtered on Product Type and on Manufacturer.

Next, we will want to set up our Configuration drop-down to only show us products that have the Product Type and Manufacturer the user has selected. To do so, we can set the “Items” property on the Configuration drop-down we added (the control, not the field) to the following:

Distinct(Filter(ManufacturerFilteredProducts,’Product Type’.Value = DataCardValue2.Selected.Value),Configuration.Value)

We should now have a drop-down with only the results that match the Product Type and Manufacturer the user chose in the previous two fields.

Lastly, we will want to make sure that when a user chooses a configuration that the product names that appear in the “Title” drop-down are those that match all of the previous filters. To do so, we set the “On Change” property of the Configuration drop-down to a new variable (FinalFilteredProducts).

This variable will filter the results we stored in ManufacturerFilteredProducts based on the Configuration value the user chooses and store the results for use in the Title/Product Name field. We can do this via the formula below:

Set(FinalFilteredProducts, Filter(ManufacturerFilteredProducts, Configuration.Value = DataCardValue3.Selected.Value)) – DataCardValue3 is associated with Configuration

Finally, we want to make sure that the only Titles we get back are for products that are related to all three previous drop-downs. This is simply just the Title rows in the FinalFilteredProducts variable we just created. To do this, set the “Items” property on the custom Title drop-down to the following:

FinalFilteredProducts.Title

This should produce a fully filtered list of choices for the products (as shown in the original screenshot). Given the sample data, if a user were to look at SSDs made by Timlin with a 250GB capacity, the only title we should get back is the “Timlin 250GB SSD”, which we do (shown below).

Interested in diving in deeper to Filtered Relational Drop-downs? Reach out to our team here to set up a free consultation call.


 

The Ultimate Guide to SPTechCon Boston 2019

Next week, the annual SPTechCon Boston Conference is returning for another exciting year of training, problem-solving, and networking. 

SPTechCon will cover a wide range of SharePoint and Office 365 topic areas and attendees will walk away with practical knowledge that they can apply immediately within their organization We’re excited to be a Gold Sponsor of the conference again this year.

There’s a lot happening during the week so read through this guide to make sure you attend the most important sessions and meet the right people while you’re in Boston for SPTechCon. Get all the important details, dates, and insider tips below. 

SPTechCon Schedule At A Glance

Sunday, August 25th: First day of the conference. Tutorials, Hands-on lab, happy hour.

Monday, August 26th: Technical sessions, sponsored sessions, Microsoft Keynote, networking breaks, round tables, reception in Exhibit Hall (at 5:45 pm). 

Tuesday, August 27th: Technical sessions, general sessions, networking breaks, prize announcement in Exhibit Hall, SharePoint.

Wednesday, August 28th: Technical sessions & general sessions. Conference closes. 

For a complete list of sessions and descriptions click here.

Don’t Miss These Exciting Events And Sessions

Office 365 Hands-On Kitchen

When: Sunday, August 25th — 9 am – 5 pm

Join a select group of “chefs” (speakers) as they create recipes for collaboration challenges with cooks (you!). There will be up to five teams led by two master chefs to guide them through the solution cooking process using all the ingredients available in Office 365!

Planning a Successful Migration to Microsoft Teams and SharePoint Online

When: Monday, August 26th — 9:15 – 9:45 am

Senior Consultant of Timlin Enterprises, Nick Bisciotti, is sharing his top tips for executing a successful migration to Microsoft Teams and SharePoint Online. During this presentation, you will develop a plan and identify tools to make your migrations a smooth and seamless process.

Microsoft Keynote on Monday Morning 

When: Monday, August 26th — 10 am

Join Dan Holme, Director of Product Marketing, as he shares the latest innovations and solutions for content collaboration, security, teamwork, process transformation, employee engagement & communications, and knowledge sharing & discovery. Learn how the experiences in Microsoft 365–including SharePoint, OneDrive, Yammer, Stream, PowerApps, Flow–integrate to power collaboration and the intelligent workplace across devices, on the web, in desktop and mobile apps, and in the hub for teamwork, Microsoft Teams.

Stump the Experts – Win a Microsoft Surface Go!

When: Tuesday, August 27th — 5 pm

Timlin is hosting this flagship SPTechCon event for the second year in a row! Ask clever, challenging questions of Microsoft experts. The person with the best question will win a Microsoft Surface Go!

This will be an open discussion where you can test your knowledge against some of the best, discover answers to troubling SharePoint and Office 265 topics, and take your turn at winning this awesome prize. 

#TimlinTrivia — Join Us On Twitter

Join us every morning on Twitter from Monday to Wednesday for a round of #TimlinTrivia!

Before the morning keynote each day, we will tweet a tricky Office365 or SharePoint question. The first attendee to respond with the correct answer will win an Amazon gift card!

How To Get the Most Out Of Your SPTechCon 2019 Experience

  • Preparation is key! Be sure to draft your conference schedule in advance and highlight the events that interest you the most.
    Leave some free time during the day to recharge, grab a bite to eat, and network with others. Conferences are often jam-packed with back to back sessions and information, so it’s important to soak in as much information as you can without burning out by the end of each day.
  • Find the right sessions for you with filters. Use the robust filtering system on the SPTechCon program agenda to identify the right sessions to add to your schedule. You can filter by topic, session type, session category, level, and date.
  • Set goals for yourself and your experience. Decide on whether your priority is networking or building your skillset, and make that your priority during each day. Make a list of things you’d like to learn and people you’d like to connect with. Discover the complete list of this year’s speakers
  • Meet the many sponsors and companies in the industry who are changing and challenging the status quo with their Office 365 and SharePoint solutions. Meet the Timlin Enterprises team and learn more about our Center of Excellence approach by stopping by booth #209. 
  • Join in on the fun on social media. A great way to network and connect with the conference is by chatting on Twitter under the official conference hashtag #SPTechCon

We’re excited to experience the 2019 SPTechCon with you! Let us know if you’d like to connect during the conference by sending us a message on Twitter at @TimlinEnt.

How to Fix Timestamp Issues Between Exchange and SharePoint in Microsoft Flow

microsoft flow tutorial

Microsoft Flow is often used so users can consume emails and post their content and attachments into a SharePoint list for processing.

The date and time that an email was received are common metrics that users would like to track in SharePoint lists, and the metadata on the email contains that information. However, when you try to use this field, the date and time that flows into the SharePoint list isn’t the date and time the email was received.

Why Is There an Automatic Timestamp Issue in SharePoint? 

The problem stems from the variation in date formatting.

The date and time format that comes back from Exchange emails will resemble the following: 2019-07-02T17:10:36+00:00.

To compare, the date and time format that will be stored in a SharePoint list defaults in the following format: 2019-07-02T17:10:36.0000000Z.

Due to the difference in formatting, if you simply try to store the date and time from Exchange in a SharePoint list without converting it, you will end up getting completely different times than what you would expect.

How to Fix Timestamp Issues with Microsoft Flow 

The easiest way to solve this problem is to simply convert the time we receive from the email into the SharePoint friendly format. To do so, we can use the “Convert time zone” action in Microsoft Flow.

By default, the time zone that items come back in is the UTC Coordinated Universal Time and then it is converted into the end-users local time zone from that base.

With this information, you can convert the Base Time (the email’s received time) into the “Round-trip date/time pattern”. Our source time zone and destination time zone will remain the same as we do not want the actual timestamp itself to change.

The output from this action can then be used to store the proper timestamp in a SharePoint list item as shown below and from there the issue has been resolved.

If you have any questions with this process, let us know. Also, if you work a lot with Microsoft Flow, check out one of our most popular blogs entitled How Substring Works in Microsoft Flow.


How to Revert All Lists and Libraries Back to Classic in SharePoint Online

How to Revert All Lists and Libraries Back to Classic in SharePoint Online

You may have noticed recently that your lists and libraries in SharePoint Online had changed from the Classic Experience to the Modern Experience. While Microsoft continues to push the use of the Modern Experience, these changes may become more frequent.

However, there are definitely some instances where you may want to remain on the Classic Experience for the time being, branding being one of the biggest reasons. Customization of any kind that was developed in Classic SharePoint using Content Editor Web Parts, Script Editor Web Parts, Master Page changes, etc. will not carry over into the modern sites.

The same applies to any sort of custom web parts that may have been developed for SharePoint. Any custom development that was not constructed using SharePoint Framework would not be supported or carry over easily.

So, here is a quick and easy way to use PnP PowerShell to revert all your lists and libraries back to Classic.

The Code to Revert Back to SharePoint Online Classic

The code we use is less than 40 lines and will return all the lists and libraries back to the way they were. The code does need to be run per site collection, as it will grab each subsite and their respective subsites under them and collect the lists and libraries to change back. If you are in an environment that tends to lean toward separate site collections for most aspects of your intranet, the script can be slightly modified to first grab all site collections (using and storing Get-PnPTenantSite in a variable while connected to your admin SharePoint center) and executing this same code in a loop through that variable. The code is as shown in the following screenshot.

The Process Behind the Code

The code shown will connect to your site collection via Connect-PnPOnline and the -UseWebLogin flag.

  1. First, while we are connected to the root web, we can grab all of its lists and store them in $rootLevelLists.
  2. Then, we loop through each list, check if it is already in Classic Experience and if not, use the Set-PnPList command to set it to “ClassicExperience”. You’ll notice we don’t have to use the -Web flag here as we are already in the context of where these lists live in the root.
  3. On line 3, we can gather all of the subsites under the root using Get-PnPSubWebs. The -Recurse flag will ensure we also get every subsite nested within a subsite.
  4. From there, we can iterate through each site, get and store all of the respective site’s lists in $subWebLists.
  5. We then iterate through each list, check if it is already in Classic Experience and if it is not, use the Set-PnPList command to set the List Experience to “ClassicExperience”.

The code could be refactored a bit and thrown into a function, but in this format it may be a bit easier to read. Depending on the amount of site collections, sites, lists, and libraries you have this could take 5-10+ minutes to run.

Once completed, all lists and libraries across your tenant should now be set to Classic Experience. Should you want to change this at any point in time, you can replace all of the “ClassicExperience” strings in the code to either “Auto” or “NewExperience” and re-run the script.


If you have any questions on this process or anything else related to SharePoint Online, let us know. We support literally everything SharePoint.

How Automating 5 Key Business Processes Can Help Life Sciences Companies During High Growth Phases

automating business processes for life sciences companies

Life sciences companies experience various degrees of growth based on their evolution through discovery and R&D efforts leading into clinical trials. As a company’s target drug receives positive feedback through initial clinical trials, they can experience 50% to 100% growth in one year. If they are granted approval, they also can experience growth as they add on more personnel to sales and operations.

This growth is exciting but results in insecure collaboration and significant challenges to operational efficiency.

As a life science company grows, what was once an efficient process quickly gets out of control and becomes an operational burden. Manual processes that were once simple and easy become cumbersome and inefficient.  This may be simple HR processes like vacation requests or expense management, or it may be more complicated solutions such as employee reviews, contract management, or the onboarding of new employees.

Navigating the ups and downs of growth phases is successful only if your organization adopts the proper processes and technology to support its day-to-day operations.

Defined and automated solutions that can handle basic and complicated operational tasks – and automatically scale and retract as appropriate – will enable your organization to focus on developing and moving drugs through the FDA approval process.

In this blog post, we’ll explore five key areas where business processes automation can make a material difference, based on our work with 70+ life sciences organizations – from nimble start-ups to publicly-traded enterprises.

1.) Human Resources

We find many life sciences companies use 3rd party Human Resource (HR) providers/tools, such as ADP, that allow them to automate some business processes.  Other companies use SaaS solutions for HR workflows that, depending on the solution, have some capability to automate processes.

Whether you have a separate HR solution or not, we have found that the tools in Office 365 can easily be used to automate and simplify many HR processes.  The best part — you can implement these solutions at a relatively low cost without requiring any additional investment in software.

Here are some examples of how we’ve automated HR processes in Office 365 for our customers:

  • Vacation Request and Carry Over
  • Tuition Reimbursement
  • Review Process
  • Timesheet Tracking
  • Employee Training and Tracking

These streamlined and automated processes save HR and your users a significant amount of time.  Instead of managing your review process via emails and multiple versions of a review document, an automated solution ensures all individuals involved in a particular review are notified, their responses are tracked, and, if you have multiple managers submitting data on one review, and all responses are automatically tallied into one final review.

2.) Contract Management

A Confidential Disclosure Agreement (CDA) is one of the most widely used agreements in the life sciences sector.  Although this is a simple agreement to execute, with the volume of CDA’s sent to partners, vendors, and contractors, finding and managing these documents can quickly get out of control.

Beyond CDA documents, contracts also need to be maintained for all your key relationships.  These contracts need to be organized, searchable, and easily tracked for renewals. You also need to ensure proper rules are in place to approve and process contracts efficiently.

Timlin has built several solutions to manage the entire contract management process at life sciences firms.  Historically we accomplished these solutions using 3rd party workflow and forms solutions.  Recently, we have seen that the evolution of Microsoft Flow and Power Apps has allowed us to build these solutions using the tools and applications within Office 365, removing the need for our customers to purchase 3rd party solutions.  Here’s an example below:

With the core document management and publishing capabilities in SharePoint Online, combined with the forms and workflow capabilities of Flow and Power Apps, and integration of electronic signatures, life science organizations can have a powerful contract management solution.

3.) Onboarding and Offboarding Employees & Contractors 

Although technically an HR process, the critical nature of efficiently and securely onboarding and offboarding employees and contractors has proven to be a huge benefit to our customers.  When you’re hiring 15 people a week, it’s essential to have a pre-defined and automated process to onboard everyone, so they add value and perform their tasks as soon as possible.

Life science organizations should consider automating the entire onboarding process.  The process would begin before the new employee or contractor has set foot in the door.

For example, we can build a workflow that will add a new record into your Active Directory (AD) when an offer is accepted, and then the flow triggers based on the employee start date to enable access to the appropriate systems on that date.  Our onboarding solutions can integrate with your HR, finance, and other systems as required to ensure all required steps are handled based on pre-defined rules.  One of our customers was able to help automate the analysis of over 400 systems and services with this solution.

In addition to onboarding new employees and contractors efficiently, it is equally important to shut down all access once someone leaves the organization.

Data and intellectual property protection are incredibly important for life science organizations to maintain. Not only does access need to be terminated, but these actions also need to be logged, especially for public companies who are under SOX compliance.  We have delivered automated offboarding solutions at several organizations, and have built offboarding PowerShell scripts that:

  • Capture last login date
  • Last password set date
  • Current AD security group membership
  • Set new password
  • Cancel O365 meetings
  • Remove from all AD security groups
  • Remove manager
  • Set default group to “No Access”
  • Move user to off boarded OU

4.) Finance

Finance is another key area ripe for automation in life sciences organizations.  Imagine implementing expense request approvals and reporting that provide separate approval workflows based on the amount of the expense, requestor, or department.

Another key finance flow that has proven to greatly help finance operations is Purchase Order (PO) approvals and processing. An automated PO process allows users to enter details on a new PO Request, then a workflow is triggered to ensure the correct individual(s) approve the request based on the amount, requesting department or individual.

The workflow would also provide full transparency to the submitter on the status of their request. Lastly, the workflow can integrate with or allow finance to enter the required General Ledger items.

5.) Information Technology

There are two primary areas where automating IT processes make a material difference. First, life science organizations typically follow a specific documentation review and approval process. Imagine if that workflow was built into documentation development using SharePoint? Not only is the process streamlined, but also results in more effective document management and security.

The second area is the trouble ticket resolution. Given the speed at which life sciences organizations operate, uptime is critical. Providing self-service and automated trouble ticketing solutions ensure all IT requests are tracked and managed effectively.

Successful Growth Phases Are Dependent on Strategic and Sustainable Business Automation

When you are in a high-growth phase of your company’s lifespan, it’s critical to ensure business processes are efficient. It may feel stressful most of the time, but it’s a good problem to have. These phases mean you are receiving positive results in your drug development and clinical trials.  With the proper levels of process automation, your life science organization will be able to easily and efficiently ride the waves toward FDA approval.

If you’re interested in learning more about the automation services we provide to life sciences organizations, reach out to our team of Office 365 and SharePoint experts here.

Working with Repeating Sections Using JavaScript in Nintex Forms

Working with Repeating Sections can be a hassle, but once you’re able to target them properly, it can open a new world of possibilities within your forms. In this article, we’ll explore how to implement a repeated section and calculating sums of values from as many rows that are added.

Create The Form

First, you want to create a simple Nintex Form with a repeated section.

To do this, simply choose an existing SharePoint list or create a new custom list on a site that has the Nintex Forms application added already. If you aren’t sure how to add the Nintex application to a site, learn how here. If you don’t own a license, you can also sign up for a trial on their website here.

Once you are at the list, click on the “Nintex Forms” button, and when it loads, select “Classic Form”. We are using Classic as the “Responsive Form” which does not currently support JavaScript input. Responsive Forms are great to use, but for more complex actions we will want to stick with Classic.

 

Next, for this exercise, we can remove everything currently on the form and simply add in a Repeating Section with a Quantity, Price, and Amount box (as shown below).

 

In addition, we can add a “Total” box outside of the repeating section element.

 

Assigning Variables and Classes to the Elements

For repeating sections, don’t use the functionality to assign an element in the repeating section to a JavaScript variable. This wouldn’t work as this gets assigned as an ID which you can only target a single element with. For this to work, we will assign each element in the repeating section a CSS class.

Assign the Quantity box a class of “qtyBoxes”, the Price box a class of “priceBoxes”, and the Amount box a class of “amountBoxes” (one example shown below).

For the Total box, this isn’t in a repeating section and there is only one of these, so you can assign this a JavaScript variable of “totalValue”.

Lastly, you need to assign the repeating section itself a class. This is the same procedure as the elements and simply assign it a CSS class of “repeatedSection”.

Compiling and Implementing the Code

Next, the code for tying this all together is posted below, and you can walk through what it is doing.

When working with JavaScript in Nintex Forms, you want to ensure that the form loads before trying to execute any code. To implement this code in the form, open up Form Settings and paste/type the code into the “Custom JavaScript” section.

The NWF$().ready function ensures that the form is ready. Inside of this function, we are monitoring whenever a change is made within the Quantity or Price boxes, so we can recalculate everything in the repeating section accordingly on the fly. The parseTotal function is called every time we need to recalculate the repeating sections.

It essentially loops throughout the default Nintex CSS classes for repeating sections and grabs each row that has been added. You set a variable outside of the for each loop to store the total value of all rows and set the “Total” text box to that value. Inside of the for each, you are grabbing the individual row and its respective quantity and price inputs (stored in the qty and price variables).

These then are multiplied together, after being converted to floats, and stored in the rowTotal variable. The “Amount” box is the total for each row, so we set its value in that row to the rowTotal amount. Lastly, we set the value of the “Total” text box to the totalSum variable and we are all set (results below).

Hope this helps! Contact us if you have any questions on Nintex forms and workflows.