Legacy platform

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.

The Store Appointments screen by default displays all the appointments scheduled in the current store for the day. The counts of Open and Completed Appointments for the day are displayed. This screen displays only scheduled and completed appointments. To view appointments scheduled for a different day, the store associate can select a different date on the calendar. The 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.
Note: The appointments created for Delivery Services and Provided Services of the store by using the IBM® Sterling Call Center application are also displayed.

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.

Incomplete appointments are created when the application logs out or you lose internet connectivity while creating an appointment. The purpose of showing incomplete appointments in the Store Appointments screen is as follows:
  • 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.
Creating appointments
  • 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. The createWorkOrder 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. The getWorkOrderAppointmentOptions 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 service name, selected date, time slot and the store are displayed in the bottom panel for each service.

    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 getSurroundingNodeList API is called, which reads the Standard Search Fulfillment Type rule to identify the sourcing rule set up for provided services and the getResourcePoolList API is called to find whether the selected service is provided by a store or not. The getOrganizationHeirarchy 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 as REMOVE to 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 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. The changeOrder API is called to associate the customer with the order and the confirmDraftOrder 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.
Appointment Summary
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.
Notes:
  • 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.
Managing appointments

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.

In the Appointments portlet on the home page, a store associate can either scan or enter an appointment reference number. The 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. The getNoteList 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 the CodeType as YCD_WO_CANCEL_RSN to load the cancellation reasons. When the store associate chooses to cancel an appointment, the cancelWorkOrder API is called to cancel the work order. Then, the sales order line associated with the work order is canceled by calling the changeOrder API with action as CANCEL for the OrderLine 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, the StoreAppointmentPrints_17_3 service is called to generate the printable output of the appointment summary.
Depending upon whether a time slot is reserved for a particular service or not, the following logic is executed on the Select Date and Time screen to exclude the service.
  • 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 as REMOVE or DELETE 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 as DELETE and the associated work order is canceled.
The same logic applies to the Select Service screen as well. However, in case of the Select Service screen, the Remove or Cancel link is not displayed. Instead, the store associate can use the x icon to exclude a service.
Note: When a store associate changes the store for a confirmed appointment, the Cancel or Remove link is not displayed on the Select Date and Time screen. This is to prevent the store associate from using the links based on an assumption that the service would be removed in the context of the new store.
Assumptions
  • 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.
Limitations
  • 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 and massage_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.
    For more information about administering user group permissions, see Administering user group permissions.
  • 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
    For more information, see Setting up value-added services modification groups.
  • 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.
Setting up in-store services
  1. 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.
  2. Define service skills required for the services provided in the store. For more information, see Defining service skills.
  3. 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.
  4. 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.
  5. 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:
    1. Select appropriate Service Type. For more information, see Create a provided service.
    2. Assign service skills. For more information, see Associate a service skill.
    3. Define the fixed time that is required to complete each service item. For more information, see Define primary information for a provided service.
  6. Associate services with a price list. For more information, see Adding items to a price list.
  7. 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.
Services
  • The YCD_StoreAppt_Email service uses the StoreApptDetailsEmail_17_1_multiApi.xsl.sample and StoreApptDetailsEmail_GenerateData_17_1_multiApi.xsl.sample templates. Configure the YCD_StoreAppt_Email service for your email-server in the Applications Manager by using the following steps:
    1. Navigate to the email service using the following path in the Applications Manager: Applications > Application Platform > Process Modeling
    2. Open the Order Fulfillment process type.
    3. Select Service Definitions > Store > YCD_StoreAppt_Email
    In the E-mail component, set the E-mail Server field to point to your mail server. The Subject and From fields have certain default values as part of the service, which can be customized as required.
  • The StoreAppointmentPrints_17_3 service uses the StoreAppointmentsPrints_Input_17_3_multiApi.xsl.sample and StoreAppointmentsPrints_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:
    1. Navigate to the print service using the following path in the Applications Manager: Applications > Application Platform > Process Modeling
    2. Open the General process type.
    3. 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:
    <span class="service-time-price" 
    isc-i18n="[i18n]({duration:'{{service.PrimaryInformation.FixedCapacityQtyPerLine}}',
    uom:'{{service.UnitOfMeasure}}' })globals.LABEL_Appointment_Duration"></span>
    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: LABEL_Duration_HR and LABEL_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.