You are on page 1of 3

CRM Car Rental System

Please read full document before starting the test.

Pre-Requisites:
Create a CRM online free trial environment by using below information.

 Base language: English

 Base Currency: Dollar

Instructions:
In this assignment, we want you to develop an XRM application using Dynamics CRM which will be used by small car rental
company for checking-in and out cars from.

1. After completing test, we kindly request you to send us back the following:

a. Screenshot of fields grid of Car entity (Settings -> Customize The System -> Entities -> Brand -> Fields) All
fields should be seen in the list.

b. Screenshot of Car entity main form

c. Screenshot of Contact entity main form

d. Screenshot of duplicate detection rule definition on the car entity

e. Screenshots of access settings of security roles of Front Desk Officer, Manager

f. Screenshot of report

g. Screenshot of “check-in reminder workflow” including steps and conditions

h. Screenshot of notification workflow

i. Screnshot of email template which you create in requirement #9

j. Screenshot of notification workflow

k. Screenshot of JavaScript for calculating the planned check-in date

l. Screenshot of JavaScript for planned check-in date field validation

m. Screenshot of JavaScript which updates Total Number of Rental Days

n. Screenshot of JavaScript which sets a value for Total Number of Rental Days

o. Screenshot of JavaScript which sets value for Total Price

p. Screenshot of Ribbon button customization and developed javascript codes for this button.

q. A visual studio project files where you have developed javascript, plugin and action codes.

r. CRM Solution file which has the components related to the requirements

1
Requirement:
The application specifications are below:

1. All custom components prefix should begin with first two letters of your first name and first two letters of your
last name. E.g. If your name is John Brown, your prefix should be ‘jobr’.

2. Brand entity. We expect you to define a car entity in the system in organization level. The entity should have the
following attribute:
a. Name
3. Car entity. We expect you to define a car entity in the system.
A) The entity should have the following attributes:
a. Plate Number (Primary Field)
b. Model
c. Year
d. Brand (lookup/mandatory)
e. Check-out date
f. Check-out contact
g. Planned check-in date
h. Actual check-in date
i. Fuel Type: Drop down of the following (Electric, Gasoline, Diesel)
j. Total Number of Rental Days
k. Price Per Day
l. Total Price
m. Total Price in Euro
B) Currency field and above fields should be added to the form.
4. Contact Entity. We expect you to create a number field named Age on contact entity. This field and Birthdate field
should be added main form of contact entity. Make birthdate field as required.
5. Duplicate detection. Define duplicate detection rule so that the same car should not be entered into the system
twice. You can use plate number field for this.
6. Security Roles. Define the following security roles in the system: Front Desk Officer, Manager
a) Only Managers should be able to
 add
 modify
 change ownership
cars into the system in their branch level. Also only managers should be able to
 add
 modify
brands into the system in organization level.
b) Front Desk Officers can check-in and check-out only the car records that they own. They should be able to
see other Front Desk Officers’ car records in their branch but should not be able to write to these car
records. Front desk officers should be able to append brands to the cars as a lookup.
7. Reporting. Develop a report using reporting wizard showing all the cars where status are check-out. In the report,
include the most relevant six fields.
8. Check in reminder workflow: Develop a workflow that sends an e-mail reminder to the owner of the car entity
where the car has not been returned in planned check-in date. There should not be any e-mail reminder when car
is returned in planned check-in date or before planned check-in date.
9. Notification workflow: Create a workflow which sends an email to manager of owner of the car when status
equals to check-in. The email should be sent by using an email template which should include following fields.
- Plate Number
- Brand
- Check out date
- Check out Contact
- Age of Contact
- Actual Check-in Date
- Owner

2
10. Javascripts:
a) Develop a JavaScript for “On change” event of the Check in / check out status and automatically set actual
check-in date to current date. (When status is “Check-in” actual check-in date field is automatically set to
current date. When status is “Check-out”, actual check-in date field should be cleared)

b) Develop a javascript to apply validations for planned check-in date field. This value can not be lower than
today and checkout date.

c) Develop a javascript for “On Change” event of Checkout date and planned checkin date. This javascript
calculates total number of rental days and sets Total Number of Rental Days with calculated value. (Formula
= Planned Checkin date - Checkout date) (You should find difference between checkout date and planned
checkin date in days and set to total number of rental days with found value)

E.g. Planned Checkin Date: 22-02.2019, Planned Checkout Date: 20.02.2019 then Price Per Day should be: 2

d) Develop a javascript for “On Change“ event of of Checkout date, planned checkin date and price per day. This
javascript calultates total price and updates total price with calculated value. (Formula = price per day *
(Planned Checkin date - Checkout date)) (You should find difference between checkout date and planned
checkin date in days then multiply by price per day then set calculated value to Total Price)

E.g. Price Per Day: 100 USD, Planned Checkin Date: 22-02.2019, Planned Checkout Date: 20.02.2019 then
Total Price Should be: 200 USD.

11. Action: Create an action which gets currency code and total price as parameters.
You should use below formula to return value from action:
The currency which is passed to action, should be converted to euro then the converted value should be
multiplied by total price. You can use below web services to get latest currency value for Euro.
https://exchangeratesapi.io/
https://api.exchangeratesapi.io/latest?base=USD

E.g. Input Parameter Values: USD and 700


Return Value (Output) should be 620,83 . (1 USD = 0,8869 then we multiply by 700. We calculated 1 usd equals to
9,8869 by using above links)

Call this action from car form when total price value is changed and set returned value to Total Price in Euro field.

12. Plugins:
a) Develop a plugin which should be triggered when a new contact is created or updated with different
birthdate value. Age should be calculated and updated based on birthdate value. E.g. Birthdate: 1st march
1990, Today: 11th February 2018 then age should be calculated and updated as 28.
b) Develop a plugin which should be triggered when a new Car record is created or updated with different
contact value. If Age of selected contact is lower than 18, the record should not be created or updated. Show
an exception that says “This contact can not rent a car since age of him/her is lower than 18”.
Remark: The values in the plugin should not be static. You can create a configuration entity with Key and
Value fields and use this entity to retrieve static/constant values.
13. Ribbon Button Customization: Create a button on Car entity by using following information.
a) Display Name: Download Invoice as Word
b) Enable Rule: The button should only be visible if status equals to Checkin
c) Action: Call setWordTemplate action. The values of the Car records should be shown in the word document.
Remark: setWordTemplate action is an action of CRM by default.

You might also like