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
getCompleteItemListAPI 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
createOrderAPI is called to create a sales order in the draft status. ThecreateWorkOrderAPI 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. ThegetWorkOrderAppointmentOptionsAPI 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 Store
By 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
getSurroundingNodeListAPI is called, which reads theStandard Search Fulfillment Typerule to identify the sourcing rule set up for provided services and thegetResourcePoolListAPI is called to find whether the selected service is provided by a store or not. ThegetOrganizationHeirarchyAPI 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
changeOrderAPI is called with action asREMOVEto cancel the associated work order internally.
The store associate can also remove a service on the Select Date and Time screen.
- Identify Customer
When the store associate clicks Continue on the Select Date and Time screen, the
modifyWorkOrderAPI 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
getCustomerListAPI 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
manageCustomerAPI 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. ThechangeOrderAPI is called to associate the customer with the order and theconfirmDraftOrderis 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
changeOrderAPI is called to add the notes to the sales order. When the store associate clicks View Notes, the existing notes are displayed. ThegetNoteListAPI 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
confirmWorkOrderAPI 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
getCommonCodeListAPI is called with theCodeTypeasYCD_WO_CANCEL_RSNto load the cancellation reasons. When the store associate chooses to cancel an appointment, thecancelWorkOrderAPI is called to cancel the work order. Then, the sales order line associated with the work order is canceled by calling thechangeOrderAPI with action asCANCELfor theOrderLineelement. 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_Emailservice 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_3service 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
changeOrderAPI is called with action asREMOVEorDELETEdepending 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
changeOrderAPI with action asDELETEand 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_30andmassage_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_Emailservice uses theStoreApptDetailsEmail_17_1_multiApi.xsl.sampleandStoreApptDetailsEmail_GenerateData_17_1_multiApi.xsl.sampletemplates. Configure theYCD_StoreAppt_Emailservice 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_3service uses theStoreAppointmentsPrints_Input_17_3_multiApi.xsl.sampleandStoreAppointmentsPrints_GenerateData_17_3_multiApi.xsl.sampletemplates. 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_Durationbundle 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_HRandLABEL_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.