In-store appointments
A store associate should be able to view upcoming appointments, create new appointments and manage existing appointments for a customer.
Solution
The following section describes APIs, user exits, services, and other components.
Viewing appointments
The
Appointments portlet displays the number of Open appointments scheduled to be
executed in the current store. The Upcoming Today panel displays the next
appointment scheduled based on the current store time. The
getWorkOrderAppointmentList
API is called to get the appointments count and to load
the upcoming appointments with time slot and service name.
In the Appointments portlet, a
store associate can search for customers by using the Advance Search option. The store associate can
provide customer details like First Name, Last Name, Email Address and Phone Number as search
criteria. If the search results in a single customer and if the customer has a single scheduled
appointment, the Appointment Summary screen is directly displayed. If the
search results in a single customer with multiple appointments, the
Appointments screen is displayed with the list of appointments. The store
associate can select an appointment and view the details. However, if the search results in multiple
customer records, the Customer List screen is displayed. The
getCompleteCustomerList
API is called to retrieve the customers. The store
associate can select the appropriate customer and access appointments from the customer's profile.
The getWorkOrderAppointmentList
API is called to retrieve the
appointments.
getworkOrderAppointmentList
and
getCalendarDayDetails
APIs are called to fetch the list of appointments. In the
Store Appointments screen, the store associate can use the left and right arrow
buttons to change the week or month. By default, the navigation starts with the current date and a
store associate cannot select a date in the past and a date in the future that is beyond the value
configured for the maximum allowed days in the Sterling Business Center.The store associate can click
an appointment to view the details of the appointment on the Appointment Summary screen. The
getCompleteOrderDetails
API is called to load the screen. However, if the store
associate clicks an incomplete appointment, the Select Service screen is
displayed so that the store associate can continue to work on the appointment. If the store
associate does not have permission to create an appointment, the Appointment Summary screen is
displayed on clicking an incomplete appointment.
- To allow a store associate to complete the appointment flow by capturing the customer information or updating the services
- To free up the reserved capacity allocated to services by canceling the appointments. A store associate can achieve this by clicking the incomplete appointments in the Store Appointments screen and then remove or cancel the services which in turn deletes the draft sales order and releases any reserved capacity associated with the services. In general, if you exit the wizard mid-way during appointment creation, the sales order and work orders related to the draft appointment are canceled.
- Select Service
The store associate can create appointments from the Appointments portlet, Store Appointments screen, or the Appointments screen in the context of a customer. When the store associate clicks Create Appointment, the Select Service screen is displayed where the services provided by the store are listed. The
getCompleteItemList
API is called to retrieve all the provided services which are marked as in-store services. The store associate can select a service to view a detailed description and click the + button to include the service. Alternatively, the store associate can search and include the service. An appointment is created for each service included. The store associate can also do other tasks such as removing a service and including instructions that can be referred while executing a service. - Select Date, Time, and Store(optional)When the store associate clicks Continue on the Select Service screen, the Select Date and Time screen is displayed. The
createOrder
API is called to create a sales order in the draft status. ThecreateWorkOrder
API is called to create a work order for each service item. For example, if you have two services, two work orders are created and a sales order is created with an order line for each service.Note: The draft sales order can be viewed by performing a global search and also in the cart on the customer's profile. When the store associate chooses to view the details or checkout the order, the cart details are displayed with the service order line. In this release, completing an order containing a provided service orderline is unsupported. Therefore, the store associate should delete the orderline and close the order capture process as continuing to capture the order results in error.The Select Date and Time screen displays a calendar, a panel to browse the included services, time slots, and a panel at the bottom to display the selected details along with the logged in user's store. The store associate can select a date from the calendar based on when the customer needs an appointment for the selected service. Once the date is selected, the time slots available on that date for the service are displayed, from which the store associate can select the required time slot. ThegetWorkOrderAppointmentOptions
API is called to return the available time slots for the selected date. Similarly, the store associate can perform the same tasks for each of the services. The non-working days of the store are highlighted.Note: On a non-working day, the 'Change Store' button is not displayed with the assumption that stores with similar brands have same non-working days.- If a service is unavailable at a specific store or on a particular date, an appropriate message is displayed prompting the store associate to select either a different store or date.
- If the store associate attempts to select a date that is beyond the maximum number of days allowed for scheduling appointments, an appropriate message is displayed.
The calendar is displayed for seven days by default and selecting a specific day loads the available time slots for the selected day. By default, time slots are grouped under slot groups – Morning, Afternoon and Evening, which can be configured in the Applications Manager. Icons are provided for these slot groups. However, you can define your own slot groups and if icons are required, they can be added through customization. If no slots are available, the slot group is displayed in red and the unavailable slots are not displayed
- Select StoreBy default, the current store is selected for a service. However, the store associate can select a different store by clicking the Store link in the bottom panel. The Select Store window is displayed where the current store, Nearby Stores and Search Stores tabs are displayed. On both the tabs, the store associate can use the slider to change the radius within which the customer needs a store. On the Search Stores tab, a store associate can search for a store using criteria such as country, state, city and zip code. To retrieve the nearby stores or stores based on the search criteria, the
getSurroundingNodeList
API is called, which reads theStandard Search Fulfillment Type
rule to identify the sourcing rule set up for provided services and thegetResourcePoolList
API is called to find whether the selected service is provided by a store or not. ThegetOrganizationHeirarchy
API is called to get business hours for stores.Notes:- If the number of surrounding stores (either within a city or zip code) is less than or equal to 15, only the stores where the selected service is available are displayed.
- If the number of surrounding stores is greater than 15, all the stores are displayed.
- If a store does not have the service available, the "Service is not available" text is displayed rather than business hours.
If the store associate selects a different store for service execution, the work order associated with that service is canceled and a new work order is created for the selected store. The
changeOrder
API is called with action asREMOVE
to cancel the associated work order internally.
The store associate can also remove a service on the Select Date and Time screen.
- Identify CustomerWhen the store associate clicks Continue on the Select Date and Time screen, the
modifyWorkOrder
API is called to save the changes to the appointment. If the appointment is saved, the Identify Customer screen is displayed. The store associate can select either an existing customer or create a new customer.- To search for an existing customer, the store associate can enter the customer's email or phone
number and click Search. Alternatively, the store associate can perform Advanced Search with
additional search criteria such as first name, last name, and last four digits of credit card. The
getCustomerList
API is called to retrieve the list of existing customers. - To create a new customer, the store associate can click the New Customer tab, enter appropriate
customer details, billing address, and click "Add New Customer". The
manageCustomer
API is called to create the new customer. If required, the store associate can further edit the customer details and save the changes.
When the store associate clicks Finish on the Identify Customer screen, the appointment is successfully created. ThechangeOrder
API is called to associate the customer with the order and theconfirmDraftOrder
is called to confirm the draft order. Once the appointment is successfully created, the Appointment Summary screen is displayed.Note: The customer identification screen is not displayed if the store associate creates an appointment in the customer’s context. - To search for an existing customer, the store associate can enter the customer's email or phone
number and click Search. Alternatively, the store associate can perform Advanced Search with
additional search criteria such as first name, last name, and last four digits of credit card. The
getCompleteOrderDetails
API is called to
load the screen. The store associate can toggle between the Show Info and Hide Info links to view or
hide the total charges for the appointments. The Appointment Summary screen
displays the appointment reference number that can be used later to search appointments. The service
names along with the time taken for each service, time slot, store address, and service instructions
are all displayed for the store associate's reference. - For a node configured with a locale having Daylight Saving Time(DST), the 12 AM slot is not displayed even though there is capacity to provide the service. This happens during the DST end time.
- For DST start time (March 11th, 2018), when an appointment is created during the 12 AM to 2 AM slot , the time displayed in the Appointment Summary screen is one hour ahead. For example, if you book a slot at 12 AM, the Appointment Summary screen displays 1 AM against the appointment.
If a customer wants to modify the date and time of an appointment or in some cases wants to cancel the appointment, the store associate can service the customer’s request from the Appointment Summary screen.
translateBarCode
API is called to translate the scanned
reference number with WorkOrderConfirmation
as the BarCodeType
. If
the barcode translates to a valid work order, the Appointment Summary screen is displayed.
Alternatively, the store associate can use the Advanced Search option to search for a customer and
eventually the appointments scheduled for the customer. The store associate can modify an
appointment from the related tasks on the Appointment Summary screen in the following ways:- The store associate can edit the appointment as per customer’s needs. When the store associate
clicks Edit from the related tasks, the Select Service screen is displayed
where the store associate can perform similar tasks as explained in the Creating Appointments
section. If the time slot of the appointment being edited has lapsed and the customer wants the same
service on a different date or time, the store associate can click Reschedule and reselect the date
and time when the customer wants the appointment and proceed.Note: If the store associate cannot save an appointment while rescheduling, the existing appointment is not lost.
- A store associate can click Add Notes to add important information regarding the appointment and
also mark the note as important. The note is associated with the sales order. The
changeOrder
API is called to add the notes to the sales order. When the store associate clicks View Notes, the existing notes are displayed. ThegetNoteList
API is called to retrieve the notes saved on the order. - If an appointment is executed successfully in the store, the store associate can click Mark as
Complete from the related tasks menu. If there are multiple appointments, the store associate can
select the appointments to be marked complete and click OK. In the Mark as
Complete window, only eligible appointments are displayed. An appointment is considered
eligible to be marked complete, if the current time is past the scheduled time. Once all
appointments are marked as complete, the status of the appointments changes to Completed and the
associated sales order automatically moves to the Order Delivered status. The
confirmWorkOrder
API is called to mark the appointment as complete. - When the store associate clicks Cancel Appointment in the related tasks menu, the
Cancel Appointment window is displayed where the store associate can select an
appropriate Cancellation Reason from the list and click OK. However, when there are multiple
appointments, the store associate can select the appropriate appointment to be canceled, select the
corresponding cancellation reason, and then click OK. Only appointments that are either in scheduled
or open status are eligible for cancellation and listed on the window. Completed appointments are
not listed. The
getCommonCodeList
API is called with theCodeType
asYCD_WO_CANCEL_RSN
to load the cancellation reasons. When the store associate chooses to cancel an appointment, thecancelWorkOrder
API is called to cancel the work order. Then, the sales order line associated with the work order is canceled by calling thechangeOrder
API with action asCANCEL
for theOrderLine
element. A note is also logged against the canceled sales order line with a default text note of the format: "Order Cancellation Information: Order was canceled due to <Cancellation_Reason_Code
>" - The store associate can click Share to share the appointment details through an email with the
customer. The Share window opens with the customer's email address that is auto-populated in the
Send email field. When the store associate clicks the email button, the
YCD_StoreAppt_Email
service is called to send the appointment details to the customer through email. Additionally, the store associate can print the appointment summary from the Share window for customer's reference. When the store associate clicks Print, theStoreAppointmentPrints_17_3
service is called to generate the printable output of the appointment summary.
- If a time slot is not reserved for the service, then the Remove link is displayed. When the
store associate clicks the link, the
changeOrder
API is called with action asREMOVE
orDELETE
depending on whether the service being removed in the Create Appointment or Edit Appointment flow respectively. - If a time slot is reserved for the service, then the Cancel link is displayed. When the store
associate clicks Cancel, the Cancel Appointment window is displayed where you
can select an appropriate cancellation reason and confirm. On confirming cancellation, the service
is deleted from sales order by calling the
changeOrder
API with action asDELETE
and the associated work order is canceled.
- A store associate can schedule appointments only for stand-alone provided services.
- The services that are added to appointments are executed only in the physical stores and not at the customer's site.
- Creation of in-store appointments is not supported through the IBM Call Center for Commerce application.
- Appointments can be scheduled only against the pre-defined slots for a service. The start time and end time of each time slot is fixed.
- The store associate cannot choose multiple time slots for a service
- A customer cannot choose a preferred store associate to execute a service.
- Unattended or overdue appointments are not automatically marked as Complete or Canceled.
- Customer preferred slot configuration is not supported.
- An appointment cannot be scheduled for a time slot requested by the customer, which is not listed in the pre-defined time slots for the service.
- A store associate cannot create multiple appointments for the same service in a single appointment creation flow.
- A store associate cannot add service options to the selected service.
- A store associate cannot capture payments for the provided services through the application.
- Service skills cannot be shared across resource pools. For example, assume that a store provides
two services: a Spa with a duration of 30 minutes and a Spa with a duration of 60 minutes with body
massage as the common service skill for the two services. In such a case, you must create two
separate services skills and assign them to the respective resource pools and services. For example,
massage_30
andmassage_60
.
Device-specific details
None.
Implementation
The following section describes the configuration required to use the feature.
- During participant modeling, ensure that you add a contact address for your store. For more information, see Define an organization's primary information.
- Set up a calendar for your store with appropriate details and then select the calendar as the Business Calendar. For more information, see Defining an Organization's Calendar.
- The store associate should have the following resource permissions:
- In-Store Appointment: To view the Appointments portlet.
- Manage - Create and Edit In-Store Appointment: To be able to create an appointment and modify the appointment details.
- Cancel In-Store Appointment: To cancel an existing appointment.
- Configure the fulfillment options appropriately for your store. For more information, see Configuring fulfillment options.
- Ensure that appropriate information is available in the region and zip code related tables like
YFS_REGION_SCHEMA
,YFS_REGION_LEVEL
,YFS_REGION_DETAIL
,YFS_ZIP_CODE_LOCATION
, and so on. - Enable and subscribe the following work order modification types appropriately:
- Add Instruction
- Add Note
- Change Appointment
- Cancel Work Order
- Change Instruction
- Change Service Line
- Configure the number of days beyond which appointments cannot be scheduled. For more information, see Configure fulfillment rules.
- Configure the work order cancellation reasons appropriately. For more information see Configuring work order cancellation reasons.
- Configure the Service Types appropriately for the services provided in the store. For more information, see Creating a provided service type. The "Is Service executed at store" option must be selected to view the service on the Select Service screen.
- Define service skills required for the services provided in the store. For more information, see Defining service skills.
- Define the service slot groups appropriately for your store. For example, you may group time
slots under slot groups say Morning, Afternoon, and Evening or as required. However, it is not
mandatory to define parent slot groups. For more information, see Defining slot groups.Note: The "Can Use For Appointment" option should not be selected for parent slots.
- Define resource pools appropriately for each store where you want to support in-store appointments. Also, you must define the addresses for resource pools appropriately. For example, if there are three stores in the city and you want to support appointments for services across all the three stores, you must configure the resource pools separately for each store. For more information, see Defining resource pool.
- Define the services that the store associates can execute in the store. For example, hair
styling, spa, tailoring and so on. Perform the following steps:
- Select appropriate Service Type. For more information, see Create a provided service.
- Assign service skills. For more information, see Associate a service skill.
- Define the fixed time that is required to complete each service item. For more information, see Define primary information for a provided service.
- Associate services with a price list. For more information, see Adding items to a price list.
- Define the standard capacity for each of the resource pools that you have configured for the store. You must define the capacity for each slot and the corresponding slot group as well for all working days populated from your business calendar. The capacity of a slot group is the sum of the capacities defined for individual slots. For example, if the Morning slot group has three time slots, say M1, M2, M3 and each slot has a capacity of 10, the capacity of the Morning slot group is 30. For more information, see Resource pool standard capacity details.
- The
YCD_StoreAppt_Email
service uses theStoreApptDetailsEmail_17_1_multiApi.xsl.sample
andStoreApptDetailsEmail_GenerateData_17_1_multiApi.xsl.sample
templates. Configure theYCD_StoreAppt_Email
service for your email-server in the Applications Manager by using the following steps:- Navigate to the email service using the following path in the Applications Manager: Applications > Application Platform > Process Modeling
- Open the Order Fulfillment process type.
- Select Service Definitions > Store >
YCD_StoreAppt_Email
- The
StoreAppointmentPrints_17_3
service uses theStoreAppointmentsPrints_Input_17_3_multiApi.xsl.sample
andStoreAppointmentsPrints_GenerateData_17_3_multiApi.xsl.sample
templates. If you want to customize the output generated using this service, you must configure it accordingly in the Applications Manager in the following path:- Navigate to the print service using the following path in the Applications Manager: Applications > Application Platform > Process Modeling
- Open the General process type.
- Select Service Definitions > Prints >
StoreAppointmentPrints_17_3
.
- Whenever you configure a new unit of measure apart from what in available in the bundle entries
by default, you must add the corresponding bundle entry for the unit of measure to be displayed
correctly. Use the
globals.LABEL_Appointment_Duration
bundle entry to display the unit of measure in the singular and plural forms as indicated in the following sample code snippet:
Pass the duration and unit of measure values as per your mashup output. Currently, there are entries for Hour and Minute only in the bundles. For example, for hour, there are two bundle entries:<span class="service-time-price" isc-i18n="[i18n]({duration:'{{service.PrimaryInformation.FixedCapacityQtyPerLine}}', uom:'{{service.UnitOfMeasure}}' })globals.LABEL_Appointment_Duration"></span>
LABEL_Duration_HR
andLABEL_Duration_HR_plural
. If there are more unit of measures apart from these two, add them under the 'globals
' category in the extn.nls.json file present in the <Extn_workspace>/extn/ngstore/store/views/nls/<lang> directory.