Proposal Summary
This proposal outlines the scope of implementing an online Custom Patch Cable Configurator, enabling customers to configure their cables directly on the website. Once a configuration is completed, a CSV file is generated containing the necessary data to create the corresponding item record in NetSuite. The estimated time for completing this task is 86 hours.
The scope and provided estimate are based on our discussions and email communications. If any scope changes or additional feature developments are identified during the actual development, they will be treated as change requests.
Requirement from Cleerline
The requirement is to implement an online version of the current internal Excel-based Custom Patch Cable Configurator on the B2B website. The client requires the feature to allow customers to configure their own custom patch cables directly through the website. A CSV file will be generated based on the customer’s configuration data, which will be used to create the corresponding item record in NetSuite. The generated CSV file will only proceed to item creation after verification and approval by an administrator, ensuring accuracy and compliance.
Current Workflow:
- The current configurator is an Excel-based tool used internally to generate unique item records for custom patch cables.
- The tool employs macros to produce a CSV file, which is then imported into NetSuite to create the item record.
- Selection of Base Cable: The user selects a base cable.
- To create a custom patch cable, the following configuration options will be used:
- Connectors for sides A and B.
- Number of connectors.
- Furcation tubing.
- Cable length.
- Pull eye type.
- Output Generation: The macro generates a CSV output file for NetSuite import.
- Order Fulfillment: The item is added to the customer order for sale.
- This online implementation will streamline the process by allowing customers to configure patch cables independently, reducing the need for internal handling while maintaining quality and compliance through administrative oversight.
Deliverables
- The implementer will add a button labelled “Build Custom Cable” next to “Add to Cart” button on the Product detail page of the website, as shown below:
- The button will be displayed only if the ‘Enable Custom Patch Cable’ checkbox field in the item record of the item used to create the patch cable is enabled.
- Upon clicking the button, a dynamic form will be displayed.
- The form will include the following fields:
- Item Name: The name of the item from which the patch cable will be created. This field will be automatically populated based on the item or selected matrix sub-item on the PDP page.
- Connector Style: For both Side A and Side B.
- Number of Connectors: On each side.
- Furcation Tubing Options: For each side.
- Cable Length: Specified in feet.
- Type of Pull Eye: Options to be selected.
- Additional hidden fields required for item creation will be populated using the script based on predefined rules from the existing Excel Configurator. The rules for defining each field value for the CSV import, along with the options and types of form values, are detailed here:
Cable Configurator form fields
Selected Cable
Automatically populated and not editable
The item used to create the patch cable automatically takes the value from the Item ID currently selected on the PDP page.
Mode
Hidden field
The value will be calculated based on the value of Fiber Type (Web Facet) with ID: ‘custitemfibertype_facet’ of the item used to create the patch cable.
Connector A
Multi-optional fields
List the set of connector options from the Connector Option record based on the criteria of the item used to create the patch cable.
Furcation Options
Hidden field
Automatically populated with the value of the FurcationGroup field from the item record of the item used to create the patch cable.
Connector Option
Hidden field
The value pulled from the Stands Options record type for the Strand Count the correct strand Count group can be found on the cable item record as Strands Group
# Connectors
Multi-optional fields
Display the list of Connector# Count options based on the specified criteria.
Furcation Tubing
Multi-optional fields
Display the list of Furcation Tubing options from the ‘Furcation Tubing Options’ record as choices for this field.
Connector B
Multi-optional fields
List the set of connector options from the Connector Option record based on the criteria of the item used to create the patch cable.
Furcation Options
Hidden field
Automatically populated by the value of the FurcationGroup field in the item record of the item created from the patch cable.
Connector Option
Hidden field
The value pulled from the Stands Options record type for the Strand Count the correct strand Count group can be found on the cable item record as Strands Group
# Connectors
Multi-optional fields
Show the list of connector counts as options based on the criteria.
Furcation Tubing
Multi-optional fields
Show the list of Furcation tubing in the ‘Furcation Tubing Options’ record as the available options for this field.
Length (Feet)
input field
The user can specify the required length here, which will be considered in the format of feet.
Pull Eye
Multi-optional fields
List all the sets of Pull Eye Options in the Pull Eye Options record.
Fiber Part
Hidden field
value will pull from the Fiber Legend Field on the item in Components Item #1
Con A
Hidden field
Value will be pull from the connector group based on the selection of Connector A value
Con B
Hidden field
Value will be pull from the connector group based on the selection of Connector B value
Jacket
Hidden field
The value will be based on the “Jacket Type (Web Facet)” field of the item record with internal ID ‘custitemjackettype_facet’ from which the patch cable is created. We will take the first letter of the value in the above-mentioned field as the value for this field.
Color
Hidden field
Value will be pulled from the Color Legend Field on the item in Components Item #1
Polish A
Hidden field
Value will be pulled from the Polish Legend Field from the Connector Option chosen for Side A
Polish B
Hidden field
Value will be pulled from the Polish Legend Field from the Connector Option chosen for Side B
Eye
Hidden field
Value will be pulled from the Legend Field from the Pull Eye option chosen
SSF-BSF
Hidden field
Append SSF or BSF to the end of the item name/number based on the Brand Facet (custitembrand_facet) of Component #1 in the CSV file: Cleerline TSB™ = BSF, Cleerline SSF™ = SSF.
Name of New Patch cable created
Automatically populated and not editable
The name of the newly created item will follow this rule:
“fiberpart”-“#Connectors,ConA”-“#Connectors, ConB”-“length”m-“jacket,color,PolishA,PolishB,eye,SSF-BSF” using the available values in the form.
- When the customer submits the form after entering the required fields, a message will be displayed to the customer: “Request submitted successfully. It is under the verification process. We will notify you once it is completed.”
- The submitted data through the form will be processed using a SuiteScript 2.0 script. The script will extract and process the necessary field values required for the item import.
- Based on the processed data and pre-configured mapping rules for each import file column, A CSV file will be generated.
- The file will be saved in a common folder named ‘New Patch Cables_CSV’ file in the NetSuite file cabinet.
- The filename will follow the format:
<new_item_name>_<customer_internal_id>_<timeStamp>.csv.
Example: NewProductName_12345.csv.
- The timestamp will be appended to the filename to avoid duplication in cases where the same request is made by the same customer.
- The implementer will send the generated CSV file to the sales representative associated with the customer who raised the request and to the email address ‘orders@cleerline.com’
- The email will notify the recipient of the creation of a new CSV file for a patch cable request.
- The sales representative and administrative employees will verify the CSV file to ensure the new patch cable’s features meet the requirements.
- The client will review the file before importing it to avoid creating unnecessary items in the system. After verification, if the item is deemed necessary, they will create it by importing the CSV file.
- Once the item is created, the client will add it to a quote for the customer.
- The client will retrieve the customer ID from the CSV file name. The customer can then convert the quote into a sales order on the website.
Item CSV Import fields
Item Name/Number
itemid
fiberpart”-“#Connectores,ConA”-“#Connectores,ConB”-“length”m-“jacket,color,PolishA,PolishB,eye,SSF-BSF
Description
description
“Custom Patch Cable-“,Cable Select”-“#Connectores”x”ConA”-“#Connectores”x”ConB”-PullEye=”Pull Eye”-“length”m/”length in feet”ft”
Strand Count
custitemstrandcount_facet
There is a custom item field named “Strands Group” in the item record, which is linked to the “Strand Options” record. The “Strand Options” record contains a “Connector Count” field for each “Strands Group.” The value of the “Connector Count” corresponding to the Strand Group on the item record will be saved in this field.
Foot
custitemlength_facet
The length field value in feet (rounded to the nearest whole number).
Fiber Grade
custitem39
The value found using the Fiber Grade Facet field (custitem16) on of the item in Components Item #1
Class
class
This will always be Cleerline FG : Cables : Fiber Patch Cables : Custom Assemblies : value from (Fiber Mode Type) field
Fiber Mode Type
custitem38
Value of the CLASS L6 field of the item from which the patch cable created
Components Item #1
Item Member 1 itemid
For the item ID of the item from which the patch cable is created, append “-B” to the item ID. If it is a submatrix item, also specify it as “parent item:submatrix item”
Components Item #1 Qty
Item Member 1 Qty
The length field value in feet (rounded to the nearest whole number).
Components Item #2
Item Member 2 itemid
Retrieve the Connector Option Item from the Connector Option record by matching the Connector A and Furcation Tubing selected in the form with the corresponding fields in the Connector Option record
Components Item #2 Qty
Item Member 2 Qty
If ‘Connector A’ in the form is “NC”, then the quantity will be 1. Otherwise, the quantity will be the value of #connectors.
Components Item #3
Item Member 3 itemid
This will always be the item CTG-MFG OVERHEAD
Components Item #3 Qty
Item Member 3 Qty
it’s the strand count for side A, value of Item Member 2 Qty
Components Item #4
Item Member 4 itemid
This will always be the item CTG-PATCH-FANOUT
Components Item #4 Qty
Item Member 4 Qty
it’s the strand count for side A, value of Item Member 2 Qty
Components Item #5
Item Member 5 itemid
Get the ‘Furcation Tubing’ value from the form and compare it with the ‘Furcation Tubing Options’ record. If it matches, retrieve the ‘Furcation Tubing Item’ from the record containing the corresponding ‘Furcation Tubing Name.’
Components Item #5 Qty
Item Member 5 Qty
If the Furcation Tubing value on the form matches “None,” the quantity will be set to 1. Otherwise, the quantity will be the same as the value of Item Member 2 Qty.
Components Item #6
Item Member 6 itemid
The value will be based on the “Jacket Type (Web Facet)” field of the item record with internal ID ‘custitemjackettype_facet’ from which the patch cable is created. We will take the first letter of the value in the above-mentioned field as the value for this field.
Components Item #6 Qty
Item Member 6 Qty
If ‘Connector B’ in the form is “NC”, then the quantity will be 1. Otherwise, the quantity will be the value of #connectors.
Components Item #7
Item Member 7 itemid
This will always be the item CTG-MFG OVERHEAD
Components Item #7 Qty
Item Member 7 Qty
it’s the strand count for side B, value of Item Member 6 Qty
Components Item #8
Item Member 8 itemid
This will always be the item CTG-PATCH-FANOUT
Components Item #8 Qty
Item Member 8 Qty
it’s the strand count for side B, value of Item Member 6 Qty
Components Item #9
Item Member 9 itemid
Get the ‘Furcation Tubing’ value from the form and compare it with the ‘Furcation Tubing Options’ record. If it matches, retrieve the ‘Furcation Tubing Item’ from the record containing the corresponding ‘Furcation Tubing Name.’
Components Item #9 Qty
Item Member 9 Qty
If the Furcation Tubing value on the form matches “None,” the quantity will be set to 1. Otherwise, the quantity will be the same as the value of Item Member 6 Qty.
Components Item #10
Item Member 10 itemid
Based on the value of “Pull Eye” from the form, return the ‘Pull Eye Item’ that matches the corresponding ‘Pull Eye Name’ in the ‘Pull Eye Options’ record.
Components Item #10 Qty
Item Member 10 Qty
If the Item Member 10 item ID exists, the quantity will always be set to 1.
Price Level Base Price
Base Price Qty 0
Retrieve the Base Quantity 0 price of each Item Member component from the item record. then multiply the price by the corresponding Item Member quantity. Finally, sum the prices of all component items obtained.
Price Level Distributor
Distributor Price Qty 0
Retrieve the Distributor Price Qty 0 price
of each Item Member component from the item record. For ‘Component Item #1,’ apply a 10% discount to the price, then multiply the price by the corresponding Item Member quantity. Finally, sum the prices of all component items obtained.
Price Level International
International Price Qty 0
Retrieve the International Price Qty 0 price of each Item Member component from the item record then multiply the price by the corresponding Item Member quantity. Finally, sum the prices of all component items obtained.
Price Level International NS
InternationalNS Price Qty 0
Retrieve the InternationalNS Price Qty 0 price of each Item Member component from the item record then multiply the price by the corresponding Item Member quantity. Finally, sum the prices of all component items obtained.
Price Level BBY
Tier BBY Price Qty 0
Retrieve the InternationalNS Price Qty 0 price of each Item Member component from the item record then multiply the price by the corresponding Item Member quantity. Finally, sum the prices of all component items obtained.
Class L5
custitem37
The value of the “CLASS L5” field with ID “custitem37” from the item used to create the new patch cable.
Class L6
custitem38
The value of the “CLASS L6” field with ID “custitem38” from the item used to create the new patch cable.
Class Tier Two
custitemclasstiertwo
The value will be always “Custom Assemblies”
Fiber Type Facet
custitemfibertype_facet
This will come from the Fiber Type Facet
field on the item from which the patch cable created.
Connection Type Facet
custitemconnectiontype_facet
This will be a combined version of the Connection Type facet (custitemconnectiontype_facet) on the connector items. Side A then Side B.
Cable Construction Facet
custitemcableconstruction_facet
This will come from the same ‘Cable Construction Facet’ field on the item from which the patch cable created.
Fiber Grade Facet
custitem16
This will come from the same ‘Fiber Grade Facet’ field on the item from which the patch cable created.
Scope Limitation
- The proposal is based on the discussions, anticipations, and understanding through our discussions and email. Any requirement, change, and feature development identified during the development process will be treated as change request.
- The image of the newly created patch item will be a common image for patch cable items named ‘CustomPatchCable.png’ which is provided by the client. This image will be added to the common item image folder in the file cabinet, and its URL will be included as a new column in the CSV import file. This ensures that the item is assigned the correct image during the upload process.
- The customization is available only up to the creation of the CSV record. The verification of the CSV file, importing of the CSV file for item creation, and the process of including the newly created item in the quote will all be handled by the client.
- Since item creation through CSV import is performed on the client side, the implementer cannot identify conditions to handle scenarios where item creation is rejected after verifying the request. In such cases, there will be no automation to notify the customer about the failure or the reason for it. If customer notification is required, it must be managed manually by the client. Additionally, the functionality to send an email upon the creation of new patch cable items and adding them to a quote is included as an enhancement.
Assumption
- The scope and estimate are based on our current understanding of the requirements. Any changes or additional feature development identified during implementation will be treated as a change request.
- The user interface will match the current theme.
- The development will begin in the sandbox environment, and changes will only be moved to production after receiving confirmation.
- It is assumed that all the required data including the fields and records related to the items are to be already available in NetSuite. Any missing data will need to be provided and updated by the client.