You are on page 1of 16

Nexus - Royalty Invoicing Dashboards

Target Release Solstice Revenue Sales to LS Star (Previously SBUX Market)

Description Integrate Solstice data into Nexus CRM-Analytics and publish the Royalty Sales & Invoice Dashboard.

Epic LSB2BTECH-1173 - Solstice Revenue Sales to SBUX Market BACKLOG

Document Status COMPLETE

Document Owner Mohan Meyyappan

Designer Mohan Meyyappan

Developer

QA

Glossary CRM-A: CRM Analytics |

Table of Contents:

Business Purpose
Development Items
Development Details
Systems & Tools Involved
Salesforce Object and Fields
CRMA Assets
'Licensee Stores & Community Users v3' Recipe
Royalty Invoice Recipe
Branding
Metadata
LS Star Royalty Invoicing Support Request Process
Store Errors Support Request Process
Automation
Users
Deployment
Video Documentation
Support Team FAQ
JIRA Stories/Tasks/Bugs
Wireframes
Additional Dashboard Details

Business Purpose
Original Pain Points
No dashboard existed to provide a high-level analysis of sales and transaction counts on a month-by-month basis.
The SBUX Accounting team had to manually send PDFs of royalty invoices to every user that requested it, thus, the PDF request
process became inefficient.
Solution
Royalty Sales and Invoice Dashboard: This dashboard enables external LS Star users with Royalty Invoicing access to interact with
a high-level snapshot of the business across key metrics and access PDFs of royalty invoices in an interactive data table. It brings
together key metrics such as Gross Sales, Net Sales, Total Transactions, as well as more specific metrics such as Net Sales based
on Beverage, Food, and Merchandise. These views and tables can also be filtered down by Licensee, Store, Invoice Month, and
Channel (MOP or Cafe). The dashboard also brings convenience to the invoice record process and will alleviate the manual process
of invoice requests submitted to the accounting team. This invoice data table can be filtered down by Year, Period, Licensee, Store,
Invoice Number, and Invoice Type. The Royalty Sales and Invoice dashboard lives in LS Star under the Digital Services page.
Persona
External LS Star users with specific store/licensee access can access the Royalty Sales & Invoice dashboard and see relevant store
/licensee data. Internal users can view all data on the Royalty Sales & Invoice dashboard.

Development Items
Configuration
System / Tools
Salesforce Objects
CRMA Assets
Branding
Metadata
LS Star Support Request Process
Store Errors Support Request Process
Automation and Schedules
Users
Permission Sets
Permission Set Groups
Public Groups
Deployment
Videos
FAQs
Jira Stories
Wireframes
Additional Details

Development Details
Required Capabilities of the Royalty Sales & Invoice Dashboard:

Redesign Store Sales Dashboard


Sales Home Tab
Transaction Details Tab
CRMA Storage
Sales Glossary Tabs
Download / Feature Disablement
Alerts / Notifications
Invoice Number Field with Hyperlink
CRMA Storage and Automatic Deletion of Invoice PDFs
Invoice Home Tab
Invoice Glossary Tabs
Support Request Submission Process
Embed Dashboard in LS Star

Systems & Tools Involved


Oracle EBS - Doc Repository
Azure SQL Database (Secondary Storage)
GSIT/DPI (Pub/Sub)
NiFi (iPaas)
Nexus Salesforce + CRM Analytics

Salesforce Object and Fields


Demonstrated below is the object model defined as a part of the Royalty Invoicing capability.

The following is a list of fields created on the Royalty Object which get loaded by the integration:

Oracle EBS JSON Attributes Salesforce Object Salesforce Field Name Salesforce Field Label

External id Royalty External_Id__c External Id

customerTrxId Royalty Customer_Transaction_Id__c Customer Transaction Id


organizationName Royalty Organization_Name__c Organization Name

orgId Royalty Org_Id__c Org Id

transactionSourceName Royalty Transaction_Source_Name__c Transaction Source Name

transactionClass Royalty Transaction_Class__c Transaction Class

type Royalty Type__c Type

customerClassCode Royalty Customer_Class_Code__c Customer Class Code

customerClass Royalty Customer_Class__c Customer Class

salesChannel Royalty Sales_Channel__c Sales Channel

salesChannelCode Royalty Sales_Channel_Code__c Sales Channel Code

trxNumber Royalty Invoice_Number__c Invoice Number

trxDate Royalty Invoice_Date__c Invoice Date

invoiceCurrencyCode Royalty CurrencyIsoCode Currency

amount Royalty Amount__c Amount

termName Royalty Term_Name__c Term Name

termDueDate Royalty Due_Date__c Due Date

destinationCode Royalty Destination_Code__c Destination Code

creationDate Royalty Creation_Date__c Creation Date

storeNum Royalty Store_Number__c Store Number

period Royalty Period__c Period

previousCustomerTrxId Royalty Original_Invoice__c Original Invoice

royStartDate Royalty Royalty_Start_Date__c Royalty Start Date

royEndDate Royalty Royalty_End_Date__c Royalty End Date

External id ContentVersion External_Id__c External Id

CRMA Assets
The Royalty Sales & Invoice Dashboard is made up of a few CRM Analytics Assets:

Asset Name CRMA Asset Purpose


Asset Type

Royalty Sales & Invoice Dashboard Dashboard Functions as the dashboard users will use.

Starbucks Community App Analytics Controls access to all CRMA Assets related to the capability. This app is set to be
App viewable by the Royalty Sales & Invoice CRMA Access Public Group.

Royalty Object and Content Version Periodic Full Used to pull invoice related data into CRMA. The Royalty Object is configured with
Data Syncs in the SFDC Local Data Sync Sharing Inheritance turned on.

DailyStoreSalesTransactions Dataset Used as the target of the Revenue Sales Integration.

Revenue Sales Store Data Errors Dataset Used to load store errors manually into CRMA.

Royalty Invoice Recipe Recipe Used to take data from the Royalty and Content Version data syncs and transform the
data in a way that it is ready for the dashboard.

Licensee Stores and Community Recipe Used to take the Revenue Sales Dataset and transform the data in a way that it is ready
Users v3 for the dashboard.

Royalty Invoice Dataset Dataset The output of the Royalty Invoice Recipe that feeds into the dashboard.

Store – Daily Revenue v2 Dataset The output of the Licensee Stores and Community Users V3 recipe that feeds into the
dashboard.

The following is a list of fields created on the DailyStoreSalesTransactions which get loaded by the integration:

Field Data Availability Dashboard Metrics Calculation

STORESALERECORDID
STORENUMBER

BUSINESSDATE

CURRENCYCODE

CUSTOMERORDERCHANNELNAME

TOTALTRANSACTIONS Store-Month =first(TOTALTRANSACTIONS)

GROSSSALES Available by Store-Month-Channel =sum(GROSSSALES)

NETSALES Available by Store-Month-Channel =sum(NETSALES) - sum(TOTALTRANSACTIONDISCOUNTS)

DISCOUNTS Available by Store-Month-Channel

REFUNDS Available by Store-Month-Channel

TOTALTRANSACTIONSDISCOUNTS Available by Store-Month-Channel

BEVERAGENETSALES Available by Store-Month-Channel =sum(BEVERAGENETSALES)

FOODNETSALES Available by Store-Month-Channel =sum(FOODNETSALES)

MERCHANDISENETSALES Available by Store-Month-Channel =sum(MERCHANDISENETSALES)

ATHOMENETSALES Available by Store-Month-Channel =sum(ATHOMENETSALES)

COMPONENTNETSALES Available by Store-Month-Channel =sum(COMPONENTNETSALES)

MODIFIERNETSALES Available by Store-Month-Channel =sum(Modifier)

LICENSEEPRODUCTNETSALES Available by Store-Month-Channel =sum(LICENSEEPRODUCTNETSALES)

STARBUCKSPRODUCTNETSALES Available by Store-Month-Channel =sum(STARBUCKSPRODUCTNETSALES)

'Licensee Stores & Community Users v3' Recipe

Input Dataset
Daily Store Sales Transactions
1. This data is provided by the Solstice team in the form of a CSV. It follows the same structure as the data design above with
all the same columns.
Recipe
Transformations
1. Create Revenue Sales Join Key: Transform Store Number to text and create an Error Key column that concatenates Store
Number, Year, and Month.
2. Create Dashboard Show Date Logic: Transformed the input dataset by creating a new column that adds 1 month to the
business date. This column will be used to filter the data in the dashboard so that after the 5th of the current month, the
previous completed month in addition to months before that are only shown in the dashboard.
Join – Store Account Information
1. Left Joined the Account object with the input dataset to match the Store Number field in both datasets. This join helps us
look up and identify relevant information about stores from their number such as the Store Name, Account ID, Account
Name, and Parent Account.
Join – Licensee Account Information

1.
1. Left Joined the Account object with the input dataset to match the Account ID field in both datasets. This join helps us look
up and identify relevant information about stores from their account ID such as Licensee Account Store Number, Licensee
Account ID, Licensee Account Name, and the Licensee Account Parent ID.
Join – Revenue Sales Store Data Errors
1. Transformed the Revenue Sales Store Data Errors dataset to change the Store Number column into text and create an
Error Key column that concatenates Store Number, Year, and Month.
2. Left joined the Revenue Sales Store Data Errors dataset with the input dataset to match the Error Keys in both datasets as
the unique identifier for a custom error message for specific store in a specific year-month.
Join – Royalty Data
1. Transformed the Royalty object by creating the Royalty Invoice Join Key that concatenates the Store Number, Royalty
Start Date - Year, and Royalty Start Date - Month.
2. Lookup Joined the input dataset to the Royalty object and match the Revenue Sales join key to the Royalty Invoice join key.
Week Formatting
1. Created a Week Formula column that groups the day of the business date field by 5 weeks. Week 1 = Days 1-7, Week 2 =
8-14, Week 3 = 15-21, Week 4 = 22-28, and Week 5 = 29-31 (week 5 may become optional depending on month). This
column is used as the date axis in the visualizations on the Sales home page.
Output Dataset
The output dataset that drives this dashboard includes all the fields in the data design in addition to 4 joins and 5 transformations.

Royalty Invoice Recipe

Input Object
Royalty Object
1. The Royalty object data sync has the following fields that are synced daily.
Record ID
Currency ISO Code
Transaction Class
Type
Invoice Number
Term Name
Invoice Date
Amount
Due Date
Creation Date
Store Number
Period
Original Invoice
Royalty Start Date
Royalty End Date
Invoice Type
Expired PDF Invoice
External Id
Recipe
Joins
1. Join Store Attributes
Lookup Join the Store Object to match the Store Number fields on both the Royalty and Store Objects. This join
helps us look up and identify relevant information about stores from their number such as the Store Name,
Account ID, Account Name, and Parent Account.
2. Join Content Details
ContentVersion object has the following fields that are synced daily: ContentVersion ID, ContentDocument ID, and
External Id.
Lookup Join the ContentVersion object to match External Id fields on both the Royalty and ContentVersion objects.
3. Join Store Errors
Transformed the Revenue Sales Store Data Errors dataset to change the Store Number column into text and
create a Join Key column that concatenates Store Number, Year, and Month.
3.

Left joined the Revenue Sales Store Data Errors dataset to match the Join Keys in both datasets as the unique
identifier for a custom error message for specific store in a specific year-month.
Transformations
1. Created a Content Link column that dynamically updates the PDF link for an invoice number in any environment. Also
added the Join Key column that concatenates Store Number, Year, and Month.
2. Transformed the input dataset (after all joins and 1st transformation) by creating a new column that adds 1 month to the
business date. This Dashboard Show Date column is used to filter the data in the dashboard so that after the 5th of the
current month, the previous completed month in addition to months before that are only shown in the dashboard. When the
column returns false for a row, that row of data should be seen on the dashboard.
Output Dataset
The output dataset that drives this dashboard includes 3 objects (Royalty, Store, and ContentVersion), and 1 joined dataset
(Revenue Sales Store Data Errors).

Branding
Royalty Sales & Invoice Dashboard follows branding information provided by the business and wireframes provided at the bottom of this page.

Color Codes:

Green Code: rgb(0, 117, 74)


Yellow Cafe Code: rgb(183, 147, 78)

UI/UX enhancements have been made to keep the dashboard cohesive with LS Star design standards.

Metadata
CRM Analytics Datasets Metadata files can be downloaded from the dataset in CRM Analytics by going to the dataset, and under Extended Metadata,
clicking download. These can be manually loaded to new environments, or migrated via change set, however CRM Analytics can sometime show to
be inconsistent deploying metadata via change sets or Copado.

LS Star Royalty Invoicing Support Request Process


High-level overview of the LS Star Support Request Process:

There are 3 new support types for the Royalty Sales and Invoice dashboard in the LS Star Support Request Form.
Royalty Invoicing Dashboards Access
Royalty Invoicing Dashboards Data
Royalty Invoicing Dashboards Other
These support types can only be viewed in the support request form if you have access to the dashboard.
All support requests for the Royalty Sales and Invoice dashboard will be routed to the DBS team.
Please refer to the LS Star documentation for a detailed look into the LS Star support request process: https://docs.starbucks.com/display
/APM/Nexus+-+LS+STAR+Support

Store Errors Support Request Process


When there are data failures or invoices for the previous month cannot be produced, store numbers that have those issues in the selected month are
consolidated in a separate table with custom error messages when the "View Alerts" button is clicked. To keep track of the creation and resolution of
these errors, there is a store errors support request process.
Note: Store error cases will be tracked using a Period grouping.

Overview:

1. Oracle EBS / Solstice reports stores with errors to LS Tech.


2. LS Tech updates Store Errors dataset and loads into CRMA; LS Tech creates a Support Case – marks as In Progress.
3. Once resolved, LS Tech would update the store errors dataset to remove the error and update the case status to Closed when all errors in
the period are resolved.

Automation
Job Time Duration

Sales Integration Loads 3AM PST ~1hr

Royalty Integration Loads 3AM PST ~1hr

PDFs Integration Loads 4AM PST ~1hr

Batch Jobs 4AM PST ~1hr

Data Syncs Hourly at the hour mark

Recipes 5:30AM PST Daily ~2mins each

ContentDocumentLinkTrigger (countAttachment): A logic to share PDF files with external user is added to Before Insert method on
ContentDocumentLinkTriggerHandler class. When PDFs files are uploaded by Integration user, title of PDF starts with “RoyaltyInvoicing” and attached
to Royalty records then File visibility is set to “AllUsers” and Sharetype is updated to I(sharing set by record).

Flow: Royalty Invoice - Expire PDF Invoices: It is a scheduled flow on Royalty object to identify Royalty records whose PDFs need to be expired /
deleted.

Flow: Royalty Invoice - Populate Lookups: It is a scheduled flow on Royalty object to populate Store and Licensee lookups upon create and update.

Flow: SL Update Royalty Invoicing Flag: It is a record trigger flow (before insert/update) on AccountContactRelation(ACR) obj. This flow updates Roya
lty Invoicing Updated Today? custom field to true when following conditions are met:

When Royalty Invoicing Dashboards = ‘Full Access’ and Active =true


When Active field value is changed and Royalty Invoicing Dashboards = ‘Full Access’
When Royalty Invoicing Dashboards field value has changed and Active=False.

Batch Jobs triggers:

ManageRoyaltySharingforACRBatch: This batch class provide access to Royalty records to user if following conditions are met:

1. Royalty Records were created today: Query all ACR records where Royalty Invoicing Dashboards =’Full Access’ and Active=true, that are
associated with Store and Licensee associated with Royalty records created today, to get Contact.User Information. Share Royalty Share
records with Contact User.
2. If on AccountContanctRelation record, Royalty Invoicing Updated Today? =TRUE AND Royalty Invoicing Dashboards = ‘Full Access’ AND
Active =true and Account.RecordType=Licensee, then query all Royalty records where Royalty__c.Account__c = AccountId to provide an
access to Contact.User.
3.
3. If on AccountContanctRelation record, Royalty Invoicing Updated Today? =TRUE AND Royalty Invoicing Dashboards = ‘Full Access’ AND
Active =true and Account.RecordType=Non-Licensee, then query all Royalty records where Royalty__c.Store__c = Account.Store__c to
provide an access to Contact.User.
4. RoyaltySharingTime: This is a custom label used in batch apex that stores number of months. 0 is default value.
If value is 0, then in point 2 and 3 above, all Royalty records are queried that were created all time.
If value is greater than 0, then in point 2 and 3 above, all Royalty records are queried that were created in those month. So, if value
is 12, then in point 2 and 3 above, all Royalty records are queried that were created in last 12 months.

ManageRoyaltySharingforACRBatch use iterables over sObjects rather than using Database.queryLocator in the Batch apex as records are pulled
from AccountContactRelation and Royalty records. Following Iterators and Iterables are implemented for Batch Class:

CustomIterator: This apex class implements the Iterator interface for the list of Royalty__c records
RShareIterable: This apex class creates a reference to the iterator that is used to traverse the data structure. We are calling the
CustomIterator class.

Parameters are passed to handle large data volume as well as handle governor limits so, batch class executes logic to share Royalty records for
Licensee and Store separately.

This batch is invoked from Scheduled class: scheduleRoyaltySharingforACRBatch.

To invoke this batch class manually,

Open the Developer Console

Click Debug | Open Execute Anonymous Window

Execute the following code:

ManageRoyaltySharingforACRBatch b = new ManageRoyaltySharingforACRBatch('licensee');

Database.executeBatch(b,100);

RemoveRoyaltySharingBatch: This batch class unshare Royalty records with user if following conditions are met:

If on AccountContanctRelation record, Royalty Invoicing Updated Today? =TRUE AND Royalty Invoicing Dashboards = ‘Full Access’ AND
Active =false
If on AccountContanctRelation record, Royalty Invoicing Updated Today? =TRUE AND Royalty Invoicing Dashboards! = ‘Full Access’ AND
Active =true

This batch apex class is invoked from finish() method of ManageRoyaltySharingforACRBatch class.

UpdateACRRoyaltyInvoicingFlag: This batch class updates and set Royalty Invoicing Updated Today? =FALSE on AccountContactRelation records
once Royalty records are shared and unshared.

This batch class is invoked from finish() method of RemoveRoyaltySharingBatch class.

scheduleRoyaltySharingforACRBatch: This is a scheduled batch apex class that executes ManageRoyaltySharingforACRBatch. This class is
scheduled to run as System user and will be invoked at 4:00 am PST.

Reschedule apex batch class at different time:

1. Delete existing job.


a. Setup>Schedule Job> Delete Job Name: Royalty records security
2. Login as SYSTEM user.
a. Setup>Apex Classes>Schedule Apex>Job Name: Royalty records security
b. Apex Class: scheduledRoyaltySharingforACRBatch
c. Frequency: Weekly and select all check box
d. Start Time:Todays date

e.
2.

e. End Date: Select most available


f. Preferred 4:00 AM PST (Current time, select new time to execute above batch classes)

Run Data Syncs and Recipes manually.

Users
The table below details the security built to meet the following personas:

1. Licensee Persona: An external user who has an Account Contact Relationship to a Licensee Account with the Analytics Licensee User Role,
and thus should be able to see the data for all stores associated to that Licensee.
2. Store Persona: An external user who has an Account Contact Relationship to a Store with the Analytics Licensee User Role, and thus should
be able to see that store’s data.
3. Internal Persona: An internal user who should be able to see all data for all stores and licensees.

Name Type Description

CRM Analytics License Permissio All users need a CRM Analytics License to interact with the Royalty Sales & Invoice Dashboard
n Set
License

B2B Store Performance Permissio External users should be assigned this Permission Set Group to be able to access the dashboard in LS
Full Access Permission Set n Set Star. The assignment of this PSG is automated upon the contact receiving the Analytics Licensee User
Group Group Role.

Royalty Sales and Invoice Public All users need a to be added to the public group to access the Digital Services page on the LS Star
CRMA Access Group platform that contains the Royalty Sales & Invoice Dashboard.

The 3 above mentioned components are granted via the automation driven by the Royalty Invoicing Dashboards picklist on the Account Contact
Relationship and will be granted when the picklist is set to “Full Access”. For more information on LS Star Account Contact Relationship automation,
see Nexus Onboarding Documentation.

Deployment
No pre-deployment steps.
Post-deployment steps below:

1. Complete the following steps in the Setup page.


a. Confirm that the CRM Analytics for Communities License Permission is set up, and View Analytics in Communities is checked.
b. Add ‘CRM Analytics for Communities’ Permission Set and the ‘Royalty Invoicing’ Permission Set to the B2B Store Performance
Permission Set Group.
c. Confirm Royalty Fields Field Level Security (FLS) for the following profiles: Analytics Cloud Integration User, Analytics Cloud
Security User, Integration User, LS Business Admin, LS Integration, LS
d. Support Teams, System Admin, & System Administrator.
e. Configure Profile Object Permissions for LS Business Admin, LS Operations, LS Support, System Admin, & System Administrator.
Make sure the boxes are checked for Read and Modify on all
f. profiles.
g. Activate 2 Royalty Flows: ‘Royalty Invoice - Expire PDF Invoices’ and ‘Royalty Invoice - Populate Lookups’.
h. Turn on Sharing Inheritance in Analytics Settings.
2. Complete the following step in Analytics Studio.
a. Confirm the Starbucks Community App is shared with Community Users and the Royalty Sales and Invoice CRMA Access Public
Group. App sharing should not include internal or external users.
3. Complete the following steps in Data Manager.
a. Turn on Sharing Inheritance for Royalty Data Sync.
b. Add Content Version and Royalty fields to Data Sync (check the Data Flow section for column selection in each data sync) and set
Royalty data sync and Content Version data sync to Full Sync.
c. Run Royalty, Content Version, Account, & Store data syncs if not scheduled. Open up recipes (Licensee Stores and Community
Users v3 and Royalty Invoice Recipe) and click save & run in the right corner.
d. Schedule Recipes (Licensee Stores and Community Users v3 and Royalty Invoice Recipe) for 4AM PST Daily.
e. Check Store Daily Revenue dataset and Royalty Invoice dataset has sharing inheritance source as the Royalty object, and security
predicate is set to false.
f. Check JSON metadata files for Royalty Invoice dataset and Store Daily Revenue dataset.
4. Complete the following steps in Analytics Studio.
a. Hide Analytics Dataset in Starbucks Community App.
b. Open up dashboard and load all glossary images/logo, and make sure glossary images fit the width. Save dashboard.
5. Complete the following steps in the Setup page.
a. Embed dashboard in LS Star. Steps to do so are in the FAQ section below.
b. Go to the Categorizations Tab and rename the Store Performance page to Royalty Invoicing Dashboard.
c. Check field dependencies for the Royalty Invoicing Support Types aligning to LS Star.
d. Check Queue Routing for the Royalty Invoicing types.

Video Documentation
Video Documentation Folder in Starbucks Teams
Embed Dashboard in LS Star Video
CRMA Demo Video - Info on Data Syncs, Datasets, Recipes, Sbux Community App & Analytics Studio
Royalty Invoicing Dashboard Security - Info on Apex Class
Royalty Invoicing Dashboards Hypercare

Support Team FAQ


How do I embed the dashboard in LS Star?

1. Go to the Setup page and search for All Sites in the Quick Find search.
2. Click on the All Sites page under Digital Experiences.
3. Click on the 'Builder' link next to LS Star.
4. Click on the top left where it says Home to navigate through pages.
a. Scroll down to or search for 'Store Analytics' and click on it.
5. In the top left, click on the lightning bolt called Components.
6. Drag the 'CRM Analytics Dashboard' component to place it under the Royalty Invoicing Dashboard header.
a. After you have placed it, it is a little slow and takes some time for it to show up.
7. Once it shows up, a box will pop up on the right. Make sure the dashboard selected is the Royalty Sales & Invoice Dashboard.
8. Change the height to 1500.
9. In the checkboxes towards the bottom, check the boxes for Open Links in New Windows and Hide on Error, leave everything else unchecked.
10. In the top right, click Publish and click Publish again in the pop up.
a. You will get a confirmation email when the dashboard is successfully published.

If I want to see what users currently are shared with Royalty records, what query should I run?

The following will get you all Royalty External Ids and the Name of the User they are shared with.
select Parent.External_Id__c, UserOrGroup.Name from Royalty__Share
Additional Scenarios:
To add more Royalty fields, add Parent.[Field_Name]
To add more User fields, add UserOrGroup.[Field_Name]
To filter by a certain store number:
To filter by a certain licensee name:
To filter by a user’s name:

Where can I find the deck to update glossary screenshots?


Here is the deck’s location on Starbucks Teams.
To access the screenshots currently on the dashboard, please go to the Glossary Screenshots folder.

When I need the dashboard to show as unavailable to all users via the error message constructed, how do I do that?
If the whole dashboard needs to be down, an internal admin can right click + unhide and move the hidden "Dashboard Unavailable"
page all the way to the left to prevent navigation to the rest of the dashboard while it is under maintenance. The message on the
unavailable page can be modified by editing the text box. After maintenance is completed, the page can be re-hidden and moved
back to the right again to make the dashboard available for use.

JIRA Stories/Tasks/Bugs
If you are unable to open a Jira story linked below, please contact your Jira administrator and request access to Project = LSB2BTECH - thank you!

LSB2BTECH
SBUX Market CRMA – All Standard Issues
SBUX Market CRMA - Stories
SBUX Market CRMA – Bugs
SBUX Market CRMA – Tasks

Wireframes
These are the wireframes we received from the client during the requirements gathering period of design sessions.

Sales Wireframes
Royalty Invoice Wireframes
The following images below are from the dashboard after build was complete. There are notable formatting and structural changes between the
wireframe and the dashboard such as combining Revenue Sales and Royalty Invoice dashboards together, branding, filter choices, etc. These are all
decisions made through discussing with the SBUX team.

Sales Home page

Transaction Details page


Invoice Home page

Store Errors page

Help page
Invoice Home Glossary

Requesting Support page

Additional Dashboard Details


The table below identifies and describes the key components involved in the Royalty Sales & Invoice Dashboard.

Co Associated Expected Behavior Description Technical Detail


m Dashboard
po Widget(s)
ne
nt

Sa The Home Tab provides a user-friendly interface that Created 4 charts on the home tab – Net Sales, Gross Sales, Transactions,
les Net Sales enables LS Star users to view and interact with sales and Net Sales by Channel. Each chart was queried to show the data by
Ho Widget - Bar and transaction data by charts/widgets and filters. Users calendar week. Each visualization also has a visual tooltip that shows a bar
m Chart can filter the data in an intuitive way and see real-time graph breaking down the week by calendar days in that week.
e Gross Sales updates on the Home Tab, giving them the ability to
Tab Widget - Bar quickly gain insights and make informed decisions.
Chart
Transactions
Count
Widget -
Line Graph
Net Sales by
Channel
Widget - Pie
Chart

Tr LS Star users are able to view and analyze up-to-date Created 3 tables on the transactions details tab – Total Sales by Store, Daily
an Total Sales sales data across different time periods, including past Sales, and Daily Sales by Channel and Category. Each table’s numeric fields
sa by Store - data, using the specified date grouping and being able can be clicked on to drill down on the data for a specific store or specific date
cti Table to filter by additional dimensions such as store number, (faceting/selections is turned on in those widgets).
on Daily Sales - month, licensee, and channel. The users can facet the
De Table tables using the click-path displayed in the wireframe at
tail Daily Sales the bottom of this page.
s by Channel
Tab & Category -
Table

Inv The Invoice Home Tab provides a user-friendly invoice Created the invoice data table with the following columns: Store Number,
oic Invoice Data data table to view and interact with invoice PDFs and Invoice Number, Invoice Type, Period, Invoice Date (descending), Amount,
e Table relevant invoice information. LS Star community users Currency, and Due Date. Widget actions were left on for this table.
Ho can filter the data table in a way that quickly provides
m them with specific insights on invoices.
e
Tab

Inv From the table in the Royalty Invoice Dashboard in LS In the Royalty Invoice Recipe, the Content Document object was added to pull
oic Invoice Data Star, external contacts with the Store Performance Full the IDs and joined to the Royalties data. Also added a formula transformation
e Table > Access Permission should be able to click on the to create the link to the file dynamically based on the row. In the dashboard
Nu Invoice invoice number to open/download their invoice PDFs for table, a column was added for the invoice number and the link (the link column
m Number the last 24 months. After the 24th month after the was hidden). Linked the invoice number to the hyperlink in the dataset to allow
be Column period, the PDF invoice should be removed from Nexus, the PDF to open when clicked.
r and the external contact will need to work with the
Fi collections team to receive their invoice.
eld
wit
h
Hy
pe
rlink

He LS Star community users are able to find detailed These pages contain screenshots of the dashboard (with sensitive names
lp Help Home explanations and instructions on every widget present /numbers edited out) and red numbered bubbles with arrows to call out each
Pa Page on the dashboard, including its purpose, functionality, feature on the dashboard. This is accompanied by corresponding definitions
ge All hidden and how to interact with it. The content on the glossary and use cases for each feature on the dashboard provided/confirmed by the
glossary tab uses a mixture of images and text to guide users business. Each section of the dashboard has its own glossary page. The
tabs (Invoice through the information. Users can also find dashboard Requesting Support page was added to provide dashboard FAQs and guide
Home FAQs and guidance on submitting a support request users through the process of submitting a support request through LS Star.
Glossary, through the LS Star support request form.
Sales Home
Glossary,
Trx Details
Glossary,
Store Errors
Glossary,
and
Requesting
Support)

Sa These filters are present on all dashboard pages except Created 4 list selector widgets and queried each field a filter is needed for.
les Invoice the glossary. For Store and Licensee filters, depending Invoice month is in the month-year format (e.g., May 2023). Store filter has
Filt Month on the external user and their security permissions, they both the store number and name in the list. All filters appear on and apply to
ers Store will only be able to see the stores/licensee they have all Sales pages in the dashboard.
Licensee access to.
Channel

Ro These filters are present on all dashboard pages except Created 6 list selector widgets and queried each field a filter is needed for.
yal Year the Help page. For Store and Licensee filters, Period filter is using epoch seconds to sort the dates descending. Store filter
ty Period depending on the external user and their security has both the store number and name in the list. All filters appear on and apply
Inv Store permissions, they will only be able to see the stores to the Invoice Home page and Store Errors page.
oic Licensee /licensee they have access to.
e Invoice
Number
Filt Invoice Type
ers

Al LS Star community users are able to see an indicator in Created a URL button on the dashboard called View Alerts that linked to a
ert View Alerts the dashboard when there are data failures or when page on the dashboard called Store Errors. This page is only visible by
s button invoices for the previous month cannot be produced. clicking on this button. On this button, there is also a query that counts the
/N Store numbers that have issues in the selected month number of errors on the dashboard and populates that number next to the
otif are consolidated in a separate table with custom error View Alerts text. If there are any errors at that time in that month, the number
ica messages when the "View Alerts" button is clicked. will be greater than zero.
tio
ns On the Store Errors page (after clicking on View Alerts), there is a table that
displays the store number and the custom error message associated with that
store. This query was generated after the Revenue Sales Store Data Errors
dataset was joined to the input dataset, so after deployment, if Solstice finds
errors in certain stores and wants to alert users, they can replace the Revenue
Sales Store Data Errors dataset with their own custom error messages for
specific stores. This table will populate those messages and the View Alerts
button will count the number of errors.

Da - Default view (after the 5th of the current month) should For more detail on input/output datasets and the recipe, see the Data Flow
ta be the previous completed month. E.g.: On Feb 4th, section below.
2023, the default view will be Dec 2022. On Feb 5th, it
would be Jan 2023.

Automation: Data is refreshed daily and recipe is run


subsequently.

You might also like