Digital Transformation for a Fluid E-commerce Experience

,

As we ride the wave of Digital Transformation and increasing competition, the demand for sophisticated e-commerce solutions becomes imperative.

Looking at the fast-changing trends in the way we think of the e-commerce landscape, there is a tremendous rise in the usage of e-commerce terminology and implementationAs we have already observed, there is a huge surge in the number of organizations focusing on digital transformation. As a result, these two words are becoming seemingly interconnected in a lot of ways. 

Say for instance your business has started transforming digitally to keep up with the evolving business models and your competitors. Then, you would also require implementing and conducting all your transactions digitally. Hence, incorporating e-commerce becomes a key factor in the digital transformation journey. 

Why Embrace E-commerce? 

It has also become of utter importance for traditional retailers, manufacturers and wholesalers to embrace technology. We have been seeing a huge decline in the footfall in brickandmortar stores and this rate will only grow. To satisfy the scaling demand for technology in online retail and wholesale, you must implement omnichannel, multichannel, marketing tools and e-commerce solutions (all these come under the umbrella term digital transformation). 

To put some weight to the argument, let’s walk through an example of an “e-commerce company that happens to sell pizza.” (Yes, you heard it right!) 

It is well known that Domino’s had both an image and a sales problem in the mid-2000s. While they made vast improvements in their product quality, what they did in terms of technology and e-commerce innovation was groundbreaking. While we see in today’s scenario a lot of organizations are talking about digital transformation, what Domino’s has done over the past decade is overwhelming. It is surely a case study for everyone to refer to see how digital transformation leads to business value and improves customer loyalty. 

Some of the key ingredients in the digital transformation initiative: 

  • Topto-bottom buy-in in the initiative of every stakeholder is crucial 
  • Relentless dedication and monitoring results to improve 
  • Leveraging digital marketing and storytelling to let your customers know about your huge step and investment 
  • Believe! Believe! Believe! 

We have noticed a revolution in the way content was consumed 10 years before and now. Looking back, it’s incredible to see just how digital our world has become. 

Keeping in mind the swift changes in the e-commerce trends and beliefs of the major brands in the brand establishment, I would like to highlight some more points to keep in mind. 

Maintaining an Omnichannel Brand Integrity 

“The greatest need right now is around the entire concept of unified commerce.” 

Greg Buzek 

Studies show that 90% of the total retail sales are still happening in-stores. This implies that for large brands the question is not about in-store or online, but how to maintain the brand integrity across the multiple touch points, multiple digital and in-store channels. 

Contradictory to the statement above, online retailers like Amazon having no physical presence are still worth trillions of dollars and are estimated to double in just few short years. 

Focus on Digital content

digital content

Quality e-commerce offerings and product content surely help in boosting in-store and online sales. Great digital content is not just about selling more online. In fact, 81% of the shoppers tend to go through online reviews before they make any purchase and 60% of the shoppers check their mobile devices and compare while in store. 

It becomes imperative in the competitive digital world for brands to focus on best-in-class product content, including product descriptions, videos, images, and rich media. It not only helps in boosting in-store sales but also driving sales online. For many of today’s e-commerce advertising efforts, great content is a must-have for digital campaigns, with high-res images, videos, and other digital content. 

Speed to Market 

Embracing technology and transforming digitally has really reduced the downtime for companies to reach out to customers. Whether its launching a new product, service or offers, brands leverage the advantages, digital e-commerce transformation has to offer. While it took them years to design, strategize and launch a product, now they can do it all in months or even days. 

One industry-leading example would be, PepsiCo – they have created a whole new division focused on the intersection of e-commerce, digital marketing, and content. This division has already started earning them profits. With the right tools, PepsiCo has been able to speed up their time to market and launch products from three months to two days or less. Conclusively, it means better shopper experience and increased sales. 

Digital Transformation in the E-commerce World 

Digital transformation, which focuses on optimizing the overall customer experience across each touch point, is currently one of the hottest topics in our industry. Keeping in mind the rising demand and the need for the e-commerce companies to escalate their customer experience the following points would help you in understanding the benefits, challenges and guiding you through your journey: 

Security and Privacy of Customers ecommerce online transaction security

E-commerce merchants face growing challenges in protecting themselves and their customers from ever-increasing fraudulent activity. Many transactions that take place online are tracked but still many go untraced. With the online frauds becoming a greater threat day by day, online businesses need to act fast to take full control. Although, as fraud prevention techniques become more sophisticated so do the fraudsters and their attacks. Increasingly fraudsters are moving towards the dark net where they can buy payment and account or identity information. Simple rules and static checks are not enough to stop these fraudsters. A robust security audit and contingency strategies are a must to have.

 

Advanced Analytics 

Traditional analytics tools were more focused on analyzing the historical data for insights and informed decision making. However, there is now a growing need for these tools to predict and forecast future events and behaviors. 

Advanced analytics goes beyond the basic business intelligence, gleaning deeper into relevant insights, conducting forecasts and predictions for business strategies, and generating recommendations. These new analytics tools can churn out insights from a comparatively huge number of datasets (Big Data analytics), semantic analysis, visualization, data mining, predictive analytics, and location intelligence. Integrating these tools into the financial business processes can drive Digital Transformation and empower enterprises to include first-party and third-party data into their analytics. 

Be the E-commerce Brand Customers Love to Interact with 

The consumer behavior is changing drastically and the way they interact, and trust brands have also changed whole together. Consumers are assuming more control over their purchase decision and are aware of the best and worst practices. They can now compare brands and provide feedback on the service in real time. Observing these scenarios and the fast-changing landscape of how business was done a few years back and now, adopting and embracing Digital Transformation is a must for any emerging and growing brand especially in the E-commerce arena. 

Scrum: Framework or Methodology?

Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.

Why Scrum?

What is Scrum?

Scrum isn’t a fully-featured project management methodology. Rather, it describes an approach to Agile management with a focus on project teams, short “sprints” and daily stand-up meetings.

While it borrows the principles and processes from Agile, Scrum has its own specific methods and tactics for dealing with project management.

“Agile is the philosophy and Scrum the methodology. While Scrum is agile, agile isn’t scrum.”

The Scrum approach places the project team in front and center of the project. Often, there is no project manager. Instead, the team is expected to be self-organizing and self-managing. This makes it ideal for highly focused and skilled teams, but not so much for others.

Advantages of Scrum

  1. Scrum “sprints”: The Scrum approach is heavily focused on 30-day “sprints”. This is where the project team breaks down a wishlist of end-goals into small chunks, then works on them in 30-day sessions with daily stand-up meetings. This makes it easy to manage large and complex projects.
  2. Fast paced: The “sprint” approach with its 30-day limit and daily stand-up meetings promotes rapid iteration and development.
  3. Team-focused: Since the project team is expected to manage itself, Scrum teams have clear visibility into the project. It also means that project leaders can set their own priorities as per their own knowledge of their capabilities.

Besides these, it has all the benefits of Agile – rapid iteration and regular stakeholder feedback.

Disadvantages of Scrum

  1. Scope creep: Since there is no fixed end-date, nor a project manager for scheduling and budgeting, Scrum can easily lead to scope creep.
  2. Higher risk: Since the project team is self-managing, there is a higher risk of failure unless the team is highly disciplined and motivated. If the team doesn’t have enough experience, Scrum has a very high chance of failure.
  3. Lack of flexibility: The project-team focus means that any resource leaving the team in-between will hugely impact the net results. This approach is also not flexible enough for large teams.

Scrum is best for

The Scrum approach is best for highly experienced, disciplined and motivated project teams who can set their own priorities and understand project requirements clearly. It has all the flaws of Agile along with all its benefits. It works for large projects but fails if the project team itself is very large.

Scrum values

Below diagram depicts the core values of the Scrum framework.

 

Commitment

  1. This is not about the expectation that all scope will be delivered, no matter
  2. Commitment is about dedication and applies to actions, the effort, not the final result
  3. Maximum possible effort for achieving the goal and will be transparent
  4. Commitment towards –
    1. Quality
    2. Collaboration
    3. Learning
    4. Professionalism
    5. Excellence
    6. Self-organize
    7. Improvement
    8. Transparency

Focus

  1. Focus on what is most important now
  2. Future is highly uncertain, focus on YAGNI – “You aren’t gonna need it”
  3. Focus on the simplest thing

Openness

  1. Be transparent, inspect in order to make sensible adaptation
  2. Open about our work, progress, problems, and learnings
  3. Open for people and working with people
  4. Acknowledging people to be people, and not resources, robots or replaceable machinery
  5. Open to collaborate with stakeholders and wider environment
  6. Open in sharing feedback and learn from one another
  7. Open for change

Respect

  1. Respect for people, their experience and their personal background
  2. Respect different opinions, we might learn from it
  3. Respect for our sponsor by not building features that nobody will use
  4. Respect for users by fixing their problems and quality product
  5. Respect for wider environment by not behaving as an isolated island in the world
  6. Respect each other’s skills and expertise

Courage

  1. Courage to not build features that nobody wants
  2. Courage in admitting requirements will never be perfect
  3. Courage in admitting that no plan can capture reality and complexity
  4. Courage to not deliver undone features
  5. Courage to share risks and benefits
  6. Courage in sharing information that might help team and the organization
  7. Courage to change direction

Roles, Artifacts, and Events in the Scrum Framework

Below diagram depicts various roles and their correlation in the Scrum framework.

 

Roles

Various roles that comprise of scrum framework are:

Scrum Master

A Scrum Master is a team leader and facilitator who helps the team members to follow agile practices so that they can meet their commitments. The Scrum Master is responsible for ensuring Scrum is understood and enacted.

A Scrum Master serves the Scrum Team

  1. Lead by example. Be the first one to be vulnerable. Be a living demonstration of team assets and scrum values. Admit your missteps.
  2. Create an environment of safety. Encourage debate, support it and keep it productive. Use coaching techniques like open questions.
  3. Facilitate Consensus. Try to have key decisions made clear at the end of team discussions, making responsibility and deadlines clear.
  4. Learn to read the room. Be connected without being present.
  5. Show patience. Be okay with silence. Let the team take action.
  6. Restrain from solving. Reveal, not resolve. Be careful not to steer the team towards premature resolution of conflict to protect people. Help team members develop conflict resolution skills.
  7. Be comfortable with failure. Team decisions may not lead to the anticipated outcome. This is part of learning and growth.
  8. Care for people. Listen to them without judgement. Assume positive intent. Meet them where they are and help them find the next step.
  9. Show low tolerance for organizational impediments.

Below diagram depicts the misunderstood stances of a scrum master

 

Stances of a scrum master

 

Stances of a scrum master are:

  1. Servant Leader
  2. Coach
  3. Facilitator
  4. Teacher
  5. Mentor
  6. Manager
  7. Impediment Remover
  8. Change Agent

Scrum Master as a Servant Leader

  1. Setting up Scrum as a servant process, not a commanding process
  2. Guiding the Development Team towards self-organization
  3. Leading the team through healthy conflict and debate
  4. Shielding the team from disturbance and external threats
  5. Helping the team make visible, remove and prevent impediment
  6. Creating transparency by radiating information via Scrum events and artifacts

Scrum Master as a Coach

  1. Coaching the Individual in –
    1. Focusing on mindset and behavior
    2. Using Scrum well
    3. Taking next step in his/her Agile journey
  2. Coaching the Team in –
    1. Creating a learning culture
    2. Changing mindset for continuous improvement
    3. Problem solving and conflict resolution
  3. Coaching the organization in –
    1. Collaborating with the Scrum team
    2. Doing product management with a focus on business value
    3. Delivering high quality and valuable products

Scrum Master as a Facilitator

  1. Facilitate the Scrum process and the continuous improvement of the process
  2. Facilitate the integration of Scrum team into the wider organization
  3. Facilitates the Scrum events to be purposeful and effective
    1. Daily Scrum – an atmosphere where healthy peer pressure occurs on delivering quality, commitment and addressing impediments
    2. Sprint Planning – collaboration between the Development Team and the Product Owner, keeping a strong focus on delivering value
    3. Sprint Review – Scrum team, sponsors and stakeholders collaborate to work as One team with the same purpose
    4. Sprint Retrospective – a safe atmosphere in which “elephant in the room” is addressed

Scrum Master as a Teacher

  1. Teach Agile during the team start-up
  2. Teach the Scrum team about Empiricism
  3. Teach about Scrum to Scrum team and other stakeholders
  4. Teach the difference between Scrum the Best practices
  5. Teach the team about the self-organization
  6. Team the team about removing impediments
  7. Teach the team about the importance of the product vision
  8. Team the team about visualizing progress
  9. Teach the Product Owner about Backlog Management
  10. Teach the team to have fun

Scrum Master as a Mentor

  1. Shu – Follow the Rules
    1. Scrum Master acts as a teacher
    2. Shares knowledge and skills
    3. Provide instructions on “How to do”
  2. Ha – Break the Rules
    1. Offers new perspectives and possibilities
  3. Ri – Be the Rule
    1. Act as a counsellor
    2. Give advice whenever asked for it

Scrum Master as a Manager

  1. Manages impediments
  2. Manages the process
  3. Manages the boundaries of self-organization
  4. Manages the team’s health
  5. Manages the culture

Scrum Master as a Impediment Remover

  1. Respect the self-organizing capability of the development team
  2. Creating environment where Development Team feel safe to raise impediments
  3. Understand the meaning of “Impediment”
  4. Don’t wait until the Daily Scrum
  5. Improve transparency by using the Impediment board
  6. Be bold and creative in removing impediments

Scrum Master as a Change Agent

  1. Creating an environment that allows the spirit of Scrum to thrive
  2. Leading and coaching the organization in its Scrum adoption
  3. Helping employees and stakeholders understand and enact Scrum development
  4. Causing change that increases the productivity of Scrum Team
  5. Working with other Scrum Masters to increase the effectiveness of Scrum in the organization
  6. Planning Scrum implementation within the organization

Scrum Master Service to the Product Owner

  1. Finding techniques for effective Product Backlog management.
  2. Helping the Scrum Team understand the need for clear and concise Product Backlog items.
  3. Understanding product planning in an empirical environment.
  4. Ensuring the Product Owner knows how to arrange the Product Backlog to maximize value.
  5. Understanding and practicing agility.
  6. Facilitating Scrum events as requested or needed.

Scrum Master Service to the Development Team

  1. Coaching the Development Team in self-organization and cross-functionality.
  2. Helping the Development Team to create high-value products.
  3. Removing impediments to the Development Team’s progress.
  4. Facilitating Scrum events as requested or needed.
  5. Coaching the Development Team in organizational environments in which Scrum is not yet fully adopted and understood.

Scrum Master Service to the Organization

  1. Leading and coaching the organization in its Scrum adoption.
  2. Planning Scrum implementations within the organization.
  3. Helping employees and stakeholders understand and enact Scrum and empirical product development.
  4. Causing change that increases the productivity of the Scrum Team.
  5. Working with other Scrum Masters to increase the effectiveness of the application of Scrum in the organization.

Scrum Team

It is the team which works for SDLC of the application. This team includes developers, testers, technical lead, product owner and scrum master. Scrum Teams deliver products iteratively and incrementally, maximizing opportunities for feedback. The Development Team consists of professionals who do the work of delivering a potentially releasable Increment of “Done” product at the end of each Sprint. Only members of the Development Team create the Increment.

  1. They are self-organizing. No one (not even the Scrum Master) tells the Development Team how to turn Product Backlog into Increments of potentially releasable functionality;
  2. Development Teams are cross-functional, with the skills as a team necessary to create a product Increment;
  3. Scrum recognizes no titles for Development Team members other than Developer, regardless of the work being performed by the person; there are no exceptions to this rule;
  4. Scrum recognizes no sub-teams in the Development Team, regardless of domains that need to be addressed like testing or business analysis; there are no exceptions to this rule.
  5. Individual Development Team members may have specialized skills and areas of focus, but accountability belongs to the Development Team as a whole.

Product Owner

A Product Owner drives the product from business perspective and is the one who decides and defines requirements, prioritize their values and release dates. Product owner is also involved in iteration planning and release planning meetings.

  1. Clearly expressing Product Backlog items;
  2. Ordering the items in the Product Backlog to best achieve goals and missions;
  3. Optimizing the value of the work the Development Team performs;
  4. Ensuring that the Product Backlog is visible, transparent, and clear to all, and shows what the Scrum Team will work on next;

Artefacts

Sprint Backlog

  1. Sprint backlog consists of the selected product backlog items and a plan to deliver them.
  2. Selected Product Backlog items are often decomposed.
  3. Work for the Sprint emerges.
  4. Development team members sign up for work, they aren’t assigned.
  5. Development team members may modify the Sprint Backlog anytime, as they see fit.

Product Backlog

The product backlog is a list of all the product features generally defined by “user stories”. User stories define everything potential users want to do on the site. There are many tools to keep track of your project backlog, both analogue and digital options.
After all user stories are created, they are ranked based on the priority and grouping on the stories. Grouping is done based on the inter-dependencies of the stories

Events

Sprint

Agile projects are broken down into small, consistent time intervals. These intervals are referred to as sprints.
Sprints are time-boxed iterations that serve iterative-incremental development.

  1. All development is done within a sprint
  2. A Sprint contains the time-boxed scrum events
  3. A Sprint is one month or less, and it is best to have a consistent duration
    1. Sprint length is determined by acceptable planning horizon
  4. Scrum known no phases, only Sprints
    1. No testing, hardening, release, analysis Sprints

The entire point of Scrum is to create a Done increment

A sprint has a time duration of 1 – 3 weeks depending on the extent of the overall project. Before each sprint, there is a sprint planning meeting. This meeting determines what the goals are for that sprint. Based on the team velocity, a set of features are pulled from the top of the backlog. During the sprint, no features are added, and the sprint goals don’t change

Sprint Planning

This is the first meeting of every sprint and the amount of work which can be achieved in the sprint is decided in this meeting depending on the team velocity. User stories are assigned to the dedicated team as per the requirement and analysis.

 

Daily Scrum

Every morning of the sprint the project team gets together for a short (under 15 minute) meeting. This meeting takes place at the same time every day and includes everyone on the project.

  1. 15-minute time-box daily event.
  2. Consistent place and time.
  3. Development team inspects their progress toward the Sprint goal
  4. Development team creates a plan for the next 24 hours.
  5. Not a problem-solving meeting.
  6. Not a status meeting.

Each person on the team is tasked to answer 3 simple questions:

  • What did you do yesterday?
  • What you are going to do today?
  • Any blockers or dependencies in your way?

Sprint Review/ Retrospective Meeting

At the end of every sprint, A Sprint Retrospective meeting takes place with a functional demo of the user stories that has been completed during the sprint. The sprint review meeting brings together the project team and other project stakeholders like the client to present the work that was completed.

  1. Scrum Team inspects how the last sprint went
    1. People, relationships, process, tools
    2. Definition of “Done”
  2. Scrum team selects actionable improvements for implementation in next Sprint.

Scrum events quick reference

Event

Inspection Adaptation Who Attends

Time-box for 1 Month

Sprint Planning Product Backlog Sprint Goal, Forecast, Sprint Backlog Scrum Team 8 hours
Daily Scrum Progress toward sprint goal Sprint Backlog

Development Team

15-minutes (always)
Sprint Review Increment, Sprint, Product Backlog Product Backlog Scrum Team Stakeholders 4 hours
Sprint Retrospective Sprint Actionable and committed improvements Scrum Team

3 hours

 

ResourceResolver Object in AEM6.1/6.0 Sling Services

As we know that getAdministrativeResourceResolver() method has been deprecated from ResourceResolverFactory interface in AEM6 and above versions. Then the question is-

Q1). How to get ResourceResolver object in Sling services in AEM6.0 and above versions?

If you are working with AEM6 or AEM6.1 then you have two options-

  1. If you know the credentials of an User and want that user credential in your service then go with getResourceResolver() method.
  2. If you don’t have user credentials and want to access ResourceResolver object then you have to use
    getServiceResourceResolver() method. as shown below –

    Note : – In this case you have to add a configuration in your Felix Console to your AEM instance.
Q2). What configuration I need to do for AEM6.0?

For AEM6.0,  configuration steps are –

  1. Go to Felix Console configuration tab i.e. http://localhost:4502/system/console/configMgr
  2. Search for User Mapping as shown in figure-
  3. Click on this service to edit it’s configuration.
  4. Here you have to add one entry and the syntax of the entry is –
    “Bundle symbolic Name”:”SubServieName”=”User Name”

    1. “Bundle symbolic Name :-  Here you have to add the bundle symbolic name where you are creating service.
    2. “SubServieName”:- This is the name you provided as a value of  ResourceResolverFactory.SUBSERVICE property i.e. “testService”.
    3. “User Name” :- This  is the user name for ex. “admin”So in my case this configuration field value becomes “com.blog.blog-bundles:testService=admin”
    After adding this entry your configuration looks like-
  5. Now everything is set for AEM6.0.
Q3). will these configurations work for AEM6.1?

No

Q4). What configuration, do I need for AEM6.1?

If you are working with AEM6.1 that you have to complete all steps explained for AEM6.0. To make these configurations  working for AEM6.1, you have to ensure that the “jcr:PrimaryType” of your user is “rep:SystemUser” i.e if you are trying to use “admin” user. Then it will not work as it’s “jcr:PrimaryType” value is  “rep:User”.

Q5). What do you mean by “jcr:PrimaryType” as “rep:SystemUser”?

It means that user is just not a repository user. It must be system user.

Q6). How to create System User in AEM6.0?

For creating System User, follow these steps-

  1. Go to CRX Explorer http://localhost:6502/crx/explorer/index.jsp
  2. Login as Administrator i.e. using “admin:admin”
  3. Click on “User Administration”, you will see a screen just like this –
  4. Here you will see a option of “Create System User”, Click on this button.
  5. Add a value for User Id field for ex. “testUser”
  6. Click on green button.
  7. Close the window.
  8. Go to CRXDE Lite, your “testUser” will be created under /home/system directory. If you are not able to find then search for “testUser” in home screen. You will get the location.
Q7). How to use this user?

In your “Apache Sling Service User Mapper Service” configuration change your entry from –
com.blog.blog-bundles:testService=admin to com.blog.blog-bundles:testService=testUser

Q8). Should I do this configuration at “Apache Sling Service User Mapper Service” configuration or should I create a “Apache Sling Service User Mapper Service Amendment” service configuration?

You can do it by both ways. But as “Apache Sling Service User Mapper Service” is a service factory in AEM6.1 so as best practices you should create another service configuration by clicking on plus button at the front of “Apache Sling Service User Mapper Service Amendment”.
When you click on “+” button, one new configuration will be created at the end. Click on that service and do this configuration there. Your code will work in same manner as working before.

Happy Coding..!!

Ankur Chauhan
Tech Lead.

Secure Apache from Clickjacking

In this post, I will explain an important Apache2 configuration, this configuration is used to stop clickjacking. I got to know about clickjacking when I was working with security checklist in AEM.
Q1. What is clickjacking?

Clickjacking, also known as a “UI redress attack”, is when an attacker uses multiple transparent or opaque layers to trick a user into clicking on a button or link to another page when they were intending to click on the top level page. Thus, the attacker is “hijacking” clicks meant for their page and routing them to another page, most likely owned by another application, domain, or both. If it is still not clear to you then I am attaching a video URL that will explain it in a much better way.

Q2. How to stop clickjacking in the AEM using Apache2 Server?
There is a header configuration named as X-Frame-Options, using this configuration, you can stop the clickjacking.
Q3. What is the syntax of this configuration?

Header set X-Frame-Options: “sameorigin”

Q4. Where do we find this configuration?
In Apache2.4 you have a security.conf file in conf-available directory. In this file, search for X-Frame-Options, it is already present there but commented by default. Now you have two options.
  1. Uncomment this setting and restart your Apache2 server. 
  2. Copy and paste this setting in apche2.conf file, uncomment it, and restart your Apache server.

In my case, I copied and pasted this setting in apche2.conf file, uncommented it and restarted my Apche2 server.

Q5. Apache Server is throwing error when restarting after this configuration?
It may be possible that you will get an error  at the time of starting the Apache2 server, after adding this configuration, the reason is, this configuration requires mod_headers.so module enabled, which is by default disabled. So enable mod_headers.so module and your Apache server will start running successfully.
Q6. How to enable Headers.mod in Apache2 server?

For enabling this module you have a headers.load file present in mods-available directory in your Apache2 server. In my case, it is present at /etc/apche2/mods-available. Just do one thing, create a softlink in your mods-enabled folder. If you are an Ubuntu user execute this command-

Now you will see this soft link in your mods-enabled folder. Restart your Apache2 Server.
 Q7. How to check whether it’s working or not?

After restarting your Apache2 server, just hit a non cached page via Apache2 Server. Open debugger and check the response header. You will  see X-Frame-Options header field, as shown below

If you get this option on your page it means your configuration is working.

Happy Coding..!!

Ankur Chauhan
Tech Lead.