Showcase: Power Platform
Contract Management Application
Poyner Spruill, a law firm with over 135 years of history in North Carolina, used PowerApps to create a contract management application for use by client organizations. Having created about 85% of the application's functionality in-house, they sought Qdabra's expertise to wrap up final functionality, design change requests, and assessment of techniques for deploying to other sites.
The Gatekeeper application leverages Microsoft Flow and PowerApps to provide a single point of entry to create and manage both customer and vendor contracts, as well as the relationships between them.
Managing contracts and documents for both clients and vendors, as well as the relationships between these entities, was extremely difficult using standard SharePoint lists. Poyner Spruill needed an application that could provide users with easy access to associated items without needing to manually navigate between lists and libraries.
Simply using lookup columns was not enough – they needed to provide users with a rich one-stop solution for creating and relating client and vendor contract profiles and ease the complexity of locating various necessary documents. Already familiar with SharePoint Online, it seemed like a natural starting place for their app development.
Like many new PowerApps developers, Poyner Spruill was able to quickly set up an initial app prototype that reflected the real-world data structure needed for contract management. The app is used to create new client and vendor profiles, with SharePoint Online lists for data storage. Relationships can be created between clients and vendors – with any given client associated with one or more vendors, and any given vendor associated with one or more clients.
PowerApps forms made submitting and editing data trivial, and functions were used where forms weren’t a good fit. Microsoft Flows, with the SharePoint HTTP Request action, were used for creating new document sets in appropriate libraries when a client or a vendor was added.
Links in the app take the user to the necessary document set if they wish to upload additional documents, and galleries within the app display the available documents for the user.
A landing screen provides navigation to both in-app and SharePoint resources:
Color coding was used throughout the app to help the user know if they were working with clients or vendors – client pages used a blue header, while vendors were green.
While Poyner Spruill was close to wrapping up the app in-house, they needed a hand with a few features – and that’s where Qdabra came in!
We simplified deploying the app in new environments:
Moved links to a separate list to make importing more dynamic and reduce designer changes
Created documentation with steps to export, import, and perform post import fix-ups
We improved the look and feel of the app:
Changed font sizing to dynamic based on text length in labels (ensures all text is displayed regardless of device)
Changed headings to make the click action more discoverable:
We replaced data delete with smart hiding (better for audits):
Added a column to indicate what should be hidden
Filtered galleries and controls to hide items
Provided “restore” feature for admins to turn hiding off
Poyner Spruill’s application is ready for use – and for sharing with others who might wish to use it. With full documentation and testing of the export / import process, they have a step-by-step guide for deploying to another environment, and all the required features have been implemented.
In addition, they’ve had the benefit of outside testing on the app and Flows, so they can feel confident that their new app will perform as anticipated.
We engaged the PowerApps wizards at Qdabra to power us through the development of a robust, scalable out-of-the-box SharePoint Online contract management application. Qdabra helped us turn a ‘what if we tried this’ idea into a fully-functioning demonstration of what you can achieve with Office 365.
Dale Lee, Sr. Solutions Developer, Poyner Spruill
Infraction Report System
Qdabra builds infraction report system for Ennis Electric, an award-winning electrical contractor
The infraction report system allows supervisors to electronically submit and review infraction reports for employees.
“PowerApps combined with Flow has allowed us to solve very simple business workflows that had been previously challenging. Qdabra’s experience with these solutions and their advanced knowledge of SharePoint allowed us to implement and deploy quickly.
Stephen Blankenship, Ennis Electric
The application stores data in a SharePoint list and uses other SharePoint list and SQL data sources to provide supplementary data.
From the initial screen, users can choose to create a new report, view all the reports, view reports for a specific employee, or view reports they have created based on status.
Viewing all reports, reports for a given employee, or my reports based on status navigates the user to a screen with a gallery, which allows the user to select a report to view in a display form.
Email Print View button executes a Flow – see Flow section for details.
If the user viewing the record is either the creator or the approver, and if the record is in a “Draft” status, a pencil icon is displayed in the upper right allowing the user to edit and resubmit the report.
The edit screen is also used for new reports. When creating a new report, the user is presented with help text:
Selecting an employee displays a data table with the previously created infraction reports for that employee. Clicking on the Notice Number re-opens the detail screen with that report loaded for display.
There is an area at the bottom of reports to capture employee signatures – the signature area is displayed in an overlay:
Saving a signature in the app attaches the signature JPG to the Infraction Report list item using Flow & a custom connector (see the Flow section for more details). This Flow runs when the edit form submit succeeds.
From the detail screen, a user can send themselves a “print view”. The button passes the list item ID for the current Infraction Report and the user’s email address to the Flow. The Flow then gets the list item, gets URLS for any signature attachment, and sends an HTML email to the user:
Since attachments are repeating, the Flow loops through them to get the URL for any signature URLs. Infraction Types are a multi-select, so those are also concatenated via a loop.
Another Flow is used to attach the signature files to the list item when / if the employee signs the report. A custom connector in PowerApps allows access to the Flow, which has an http request trigger. The app passes in the name of the attachment, the ID for the item to attach to, the image file, the site URL and the list name, to allow for use in other applications.
The Opportunities PowerApps Solution is an app that is currently being built to allow mobile users to view jobs and opportunities assigned to them, add notes, job site photos and submit new jobs while on site. Its backend solution uses SQL Server database connections as the data sources for queries and data submission.
Initially, the user is presented with a Welcome screen with navigations to view existing and create a new Opportunity.
The My Opportunities screen connects to a SQL database table to display data in a gallery, filtered by the current user as the Project Manager. It allows for refreshing the data, sorting and further filtering (TBA).
Selecting an item shows that Opportunity’s details:
The Contract Photos screen retrieves URLs from another SQL table and displays them as images:
The Notes screen retrieves all notes that were previously submitted for the selected Opportunity:
Clicking on the plus icon allows for adding and submitting a new note.
The new note submits to a separate database table that is set up with a trigger to then send data to Qdabra’s Database Accelerator (DBXL). The DBXL configuration is set up to render the row data into an XML file which then submits back into another database table.
Back to the Home screen, clicking New shows a new form that submits to another database table the same way as Notes.
The customer card uses a dropdown control that pulls from SQL, sorted in alphabetical order. It stores the value of the CustomerKey column while displaying the CustomerName column’s value.
The Camera icon switches to a screen with the Camera control, and a customized icon that serves as the Capture button:
The Capture button stores the image into a collection and displays the taken photo into another screen.
Forms currently do not submit new data into the table they are connected to. Editing existing items work however.
The collected image from the Camera control does not display the Collection (uses the URL column in the photos collection)
McAfee Legal Knowledgebase tool helps legal team member to share and control documentations resides in various Teams sites using PowerBI
McAfee Legal Teams Knowledgebase tool allows Teams members to find contents under multiple Teams sites with category filtering, teams site and folder structure drill-down, and text search, as well as help members as a dashboard to manage documents under multiple Teams sites.
McAfee Legal team has adopted SharePoint Online and Microsoft Teams for internal knowledge sharing. Most documents are stored under Shared Document library under Teams site; though it is not easy to locate a certain document from about ten Teams sites for Legal, and deep folder structure of document library. Also, it is challenging to manage documents in various location
Create a central location to find and manage team documents utilizing PowerBI, and publish PowerBI report as a web page that (1) member can find the document they need, and (2) provide a dashboard for whom manage and maintain documents
Team members can easily locate the document they need using filter on category, date, editor, as well as text search. Document owners can maintain document in various sites and folders from a central location
The application access multiple SharePoint Teams sites’ folder and files information, and extract categories and other information for the dashboard.