We value your privacy

We use cookies to analyze site traffic and improve your experience. You can accept all cookies or reject non-essential ones. See our Privacy Policy for details.

GR IT SERVICES
  • Contact
Get a quote
  1. Microsoft security
  2. KQL threat hunting
Advanced hunting and KQL

Thirty days back, ten minutes of runtime, a hundred thousand rows returned. Those are the walls you work inside. Hunting is a practice, not a search field.

You get up to 30 days of raw Defender XDR data covering endpoints, email, cloud applications and identity, alongside Sentinel tables held for whatever retention you configured. The service limits are published and precise. Knowing them is what separates a hunt that returns an answer from a query that dies at the ten minute mark. We build the practice alongside your analysts, remotely, working in your own tenant rather than a lab.

Book a threat hunting engagementSee the limits and the data
KQL advanced hunting for US security operations teams
  • 30 daysNative Defender XDR data, per query
  • 10 minutesQuery timeout, per query
  • 100,000 rowsMaximum result set
  • Two modesGuided query builder, or KQL from scratch
What it gives you

Seven things that determine whether hunting produces anything.

The product description is a query-based hunting tool covering up to 30 days of raw Defender XDR data. It lets you go looking through events across the network for threat indicators and entities before anything has alerted, and the access model is deliberately open so hunts are not confined to threats already known.

Five sources in one query surface

A single query reaches across data from Defender for Endpoint, Defender for Office 365, Defender for Cloud Apps, Defender for Identity and Microsoft Sentinel together. That breadth is what distinguishes hunting from searching inside one product. A question beginning with an email attachment and ending at a process running on a laptop becomes one query instead of three separate investigations handed between people.

Guided mode and advanced mode, and both are legitimate

Two modes are supported. Guided mode is aimed at people who do not yet know Kusto Query Language, or who simply prefer working through a query builder. Advanced mode is for anyone happy writing KQL from a blank page. The point worth making is that teams extract genuine value from guided mode well before a single analyst becomes fluent, and that is what makes adoption realistic.

A hunt can become a detection without rewriting it

The same query you wrote for a hunt can be promoted into a custom detection rule that runs on its own, checking for and then responding to suspected breach activity, misconfigured machines and whatever else you defined. That loop is where the return comes from. A hunt that ends in an answer is worth something once. A hunt that ends in a detection is worth something permanently.

Thirty days, and extending it is a deliberate decision

Native Defender XDR data reaches back 30 days per query, no further. Extending that means onboarding a Sentinel workspace and setting analytics-tier retention on the tables you care about, after which those tables become queryable for as long as that retention holds. Streaming to an external service is the alternative path, with one caveat worth stating out loud: retention there begins on the day you switch it on, not retroactively.

Four hard limits, and you will hit at least two

Four numbers govern everything. A result set caps at one hundred thousand rows. A query gets ten minutes before the service errors out. Results are bounded at 64 megabytes, and the documentation is careful to say this is not a row count, because column count, data types and field lengths all feed into it. And CPU is allocated according to tenant size, with the allowance refreshed every fifteen minutes.

Data freshness differs by table type

Two freshness models operate side by side. Event and activity data filling the alert, security event, system event and assessment tables lands almost as soon as the collecting sensors send it. Entity data covering users and devices is assembled from static sources such as directory entries and dynamic ones such as event logs, and those tables refresh hourly with the most complete record available for each entity.

Permissions are granular, and that is worth using

Under unified role based access control, permission to read the email and collaboration tables is held separately from permission to read the alerts and behaviors schema. Access can arrive through Email and Collaboration role groups, through Exchange Online role groups, or through several Entra roles. Four of those, Global Administrator, Security Administrator, Security Reader and Global Reader, carry full read access to every advanced hunting table.

The limit nobody reads until it bites

A single careless query is enough to shut hunting down across the entire tenant.

That CPU quota is tenant-wide and its allocations are published, yet hardly anyone opens the quota table before they start hunting.

  • Straight from the service limits: the allocation follows tenant size and resets on a fifteen minute cycle. Cross ten percent of it on a running query and the portal starts warning you.
  • Hit one hundred percent and queries stop being accepted until the next fifteen minute cycle comes round. The block applies to the tenant, not to the analyst who caused it, so one unbounded query typed during an incident takes the rest of the team offline with it.
  • These limits compound rather than sit independently. Ask for every column across thirty days with no time filter and you will meet either the ten minute timeout or the 64 megabyte ceiling, having burned through a substantial slice of the tenant allocation getting there.
  • Four habits cover almost all of it, and they are the first thing we teach. Filter on time before anything else. Project the columns you actually need and nothing more. Summarize instead of pulling back raw rows. Prove the query on a narrow window before opening it up. The same reasoning is why we will not put an untrained team into advanced mode in the middle of a live incident.
Ask us to run a hunting enablement session
How we approach it

Four things that turn a training course into a practice.

Plenty of organizations have paid for KQL training and still do not hunt. Knowledge was never the missing piece. What is missing is anything in the working week that forces a hunt to happen, and anything that converts a hunt into value that outlasts the afternoon.

We teach against your data, not a lab tenant

Which tables matter depends on which Defender products you have onboarded and how your business actually operates, so the answer is different in every tenant. Train someone in a lab and you get an analyst who can write KQL. Train them in your tenant and you get an analyst who knows what normal looks like there. The second is the real prerequisite for hunting; the first is just syntax.

We start with the limits, because they shape every query

Thirty days of history. Ten minutes of runtime. A hundred thousand rows. Sixty four megabytes. And a CPU allocation shared tenant-wide that locks everybody out at one hundred percent. Teach those constraints first and the query habits that follow are sound. Teach syntax first and you get a team writing elegant queries that time out during the one incident they were needed for.

We write hunts as hypotheses with an outcome either way

Finding nothing is still a finding, as long as the hypothesis was written down beforehand and the negative result recorded so nobody runs the identical hunt again next quarter. What sustains the practice past the initial fortnight of enthusiasm, which is precisely when most of these programs quietly stop, is a standing backlog of hypotheses that matter in your industry.

We convert what works into detections that run without us

The same hunting query can be turned into a custom detection rule that runs automatically and responds to suspected breach activity, misconfigured machines and anything else you defined. That conversion is what lets the effort accumulate. Leave it out and every hunt is disposable, worth exactly the hours somebody spent on it and nothing more.

How we build the capability

Four phases, and nobody starts in advanced mode.

Run this as a training course and it dies. Run it as a practice and it survives. What follows is designed to leave a habit behind rather than a certificate, because the habit is what decides whether anyone is still hunting six months later.
  1. 01
    Weeks 1 to 2

    Access, limits, and guided mode

    Permissions get assigned on purpose rather than inherited, because unified role based access control holds email and collaboration table access apart from the alerts and behaviors schema, and because several Entra roles hand out full read access. We then go through the quota table line by line, and run the first hunts in guided mode so the team sees results before it has to learn syntax.

    • A permission model decided deliberately instead of falling back on broad Entra roles
    • Quota table understood, especially the tenant-wide CPU limit
    • First hunts run in guided mode against real questions
    • Time zone convention agreed, since all data is in UTC
  2. 02
    Weeks 3 to 6

    KQL fundamentals against your own data

    We teach advanced mode inside your own tenant, never a lab, because the tables worth knowing are the ones your estate genuinely fills. The emphasis throughout is on habits that keep you inside the service limits: time filter first, only the columns you need, summarize rather than list, and prove it narrow before you widen it.

    • Working knowledge of the tables your estate populates
    • Query habits that respect the timeout and size limits
    • A shared query library with comments and owners
    • Joins across endpoint, email, and identity data understood
  3. 03
    Weeks 7 to 10

    Hunts that answer real questions

    Hunts are structured around hypotheses that mean something in your industry, not around queries lifted off a blog. Every hunt closes with one of three results: nothing there and the hypothesis retired, something there and escalated, or something there that your detections should have caught and did not.

    • A hunt backlog written as hypotheses, not as queries
    • Findings escalated through the normal incident process
    • Gaps identified where a hunt found what no detection caught
    • Every result written down, so nobody reruns a negative hunt a quarter later without knowing
  4. 04
    Ongoing

    Convert hunts into detections

    Any query that found something gets promoted into a custom detection rule, running on its own to catch and respond to the same activity next time. This is the step that makes the effort compound instead of repeat. Hunt weekly, convert monthly, and by December you hold detections that were not available from any vendor.

    • Custom detection rules built from proven hunting queries
    • Detection tuning before rules reach the analyst queue
    • A cadence for hunting that survives a busy month
    • Retention decisions revisited where 30 days proved too short
Where this matters most

Six US situations where hunting answers a question nothing else will.

Every one of these starts as a question nothing alerted on. That gap, between what your detections happen to cover and what you actually need to know, is the whole reason advanced hunting exists.

A financial firm asked whether it was affected by a named campaign

An advisory lands from CISA, or a vendor publishes a bulletin, and it names indicators. The question that follows is whether any of them are present in your environment. With hunting that is one query across up to thirty days of endpoint, email, cloud application and identity data, closed out the same afternoon. Without it, the truthful answer is that nobody knows, and neither an examiner nor a board will accept that.

A firm investigating a suspicious email after the fact

Six email tables are available: events, URL information, attachment information, post-delivery events, campaign information and URL click events. Between them they answer the questions that matter after a phishing report. Who received it. Who clicked. What ran on the recipient machine afterwards. And whether the same message reached anyone else in the building from a different sender address.

An organization that believes it has a detection gap rather than an unusually quiet estate

Nothing a hunt produces is worth more than a genuine finding that no alert covered, because it names a specific gap you can actually close. Turn that hunt into a custom detection rule and the gap stays closed, rather than being rediscovered by a different analyst twelve months from now.

An operator that needs to look back further than a month

Thirty days is the ceiling on native Defender XDR data in any single query. Going further means onboarding a Sentinel workspace and setting analytics-tier retention on the tables that matter to you. Make that decision well before the incident that turns out to need ninety days of history, because retention is not something you can apply backwards.

A team building capability rather than buying hours

The whole point of guided mode is that a team can return useful results before a single person is fluent in Kusto Query Language, and that reshapes the adoption curve completely. Begin there, then graduate into advanced mode against questions the business actually has, and what you end up with is a capability rather than a dependency on whoever happened to write the original queries.

An organization preparing evidence for an audit or an insurer

Walking into a SOC 2 audit, a HIPAA risk analysis or an insurance questionnaire able to evidence proactive hunting, with a hypothesis backlog on paper, outcomes recorded and detections built from what was found, puts you in a far stronger position than a sentence saying alerts are monitored. It is also one of the clearest indicators that a security function is genuinely operating and not simply staffed.

Three positions

How US security teams look for what nobody alerted on.

Most competent teams live in the middle column. Hunting does occur, but only once an incident is already running, which guarantees it never surfaces anything nobody had thought of.
Queries data across all Defender products
A hunting practiceYes
Query during incidents onlySometimes
Alerts onlyNo
Hunts run on a schedule
A hunting practiceYes
Query during incidents onlyNo
Alerts onlyNo
Hypothesis driven rather than tool driven
A hunting practiceYes
Query during incidents onlyNo
Alerts onlyNot applicable
Findings escalated properly
A hunting practiceYes
Query during incidents onlyYes
Alerts onlyNot applicable
Hunts converted into detections
A hunting practiceYes
Query during incidents onlyRarely
Alerts onlyNo
Detection gaps identified proactively
A hunting practiceYes
Query during incidents onlyNo
Alerts onlyNo
Query library maintained
A hunting practiceYes
Query during incidents onlyNo
Alerts onlyNo
Service limits understood
A hunting practiceYes
Query during incidents onlyLearned the hard way
Alerts onlyNot applicable
Retention configured for the questions asked
A hunting practiceYes
Query during incidents onlyNo
Alerts onlyNo
Capability survives an analyst leaving
A hunting practiceYes
Query during incidents onlyNo
Alerts onlyNot applicable
Feature
A hunting practice
Query during incidents only
Alerts only
Queries data across all Defender products
YesSometimesNo
Hunts run on a schedule
YesNoNo
Hypothesis driven rather than tool driven
YesNoNot applicable
Findings escalated properly
YesYesNot applicable
Hunts converted into detections
YesRarelyNo
Detection gaps identified proactively
YesNoNo
Query library maintained
YesNoNo
Service limits understood
YesLearned the hard wayNot applicable
Retention configured for the questions asked
YesNoNo
Capability survives an analyst leaving
YesNoNot applicable
The published limits

Five quotas, and what each one means in practice.

The quota figures come from the published service limits table. The consequence column is our own commentary, and it is what the query habits we teach are built around.

Quota or parameter

Date range

Published limit
Native Defender XDR data reaches back 30 days; Sentinel tables follow whatever analytics-tier retention you set
Practical consequence
Anything you want to hunt beyond a month has to have had Sentinel retention configured before the fact

Quota or parameter

Result set

Published limit
100,000 rows per query
Practical consequence
Summarize instead of listing. If a hunt genuinely requires more than 100,000 rows, the question needs rewriting

Quota or parameter

Timeout

Published limit
10 minutes per query
Practical consequence
Filter by time in the first line. Every optimization after that is secondary to this one

Quota or parameter

CPU resources

Published limit
Sized to the tenant, reset every 15 minutes, warned at 10 percent, blocked outright at 100
Practical consequence
Shared across the whole tenant, so a single careless query takes the team offline until the cycle resets

Quota or parameter

Results size limit

Published limit
64 MB, driven by column count, data types and field lengths, not just how many records came back
Practical consequence
Cutting columns usually helps more than cutting rows does

Quota or parameter

API queries

Published limit
A separate set of quotas and parameters applies
Practical consequence
Anything automated has to be built against the API limits rather than the portal figures

Quota or parameter

Sentinel data lake

Published limit
Anything held only in the data lake cannot be reached from advanced hunting
Practical consequence
That data needs data lake exploration instead. Assume otherwise and you get empty results rather than an error message

Quota or parameter

Time zone

Published limit
Everything is stored in Coordinated Universal Time, and every query has to be written that way
Practical consequence
The results come back converted into your configured timezone, and that mismatch is where hour-shifted mistakes come from
Quota or parameterPublished limitPractical consequence
Date rangeNative Defender XDR data reaches back 30 days; Sentinel tables follow whatever analytics-tier retention you setAnything you want to hunt beyond a month has to have had Sentinel retention configured before the fact
Result set100,000 rows per querySummarize instead of listing. If a hunt genuinely requires more than 100,000 rows, the question needs rewriting
Timeout10 minutes per queryFilter by time in the first line. Every optimization after that is secondary to this one
CPU resourcesSized to the tenant, reset every 15 minutes, warned at 10 percent, blocked outright at 100Shared across the whole tenant, so a single careless query takes the team offline until the cycle resets
Results size limit64 MB, driven by column count, data types and field lengths, not just how many records came backCutting columns usually helps more than cutting rows does
API queriesA separate set of quotas and parameters appliesAnything automated has to be built against the API limits rather than the portal figures
Sentinel data lakeAnything held only in the data lake cannot be reached from advanced huntingThat data needs data lake exploration instead. Assume otherwise and you get empty results rather than an error message
Time zoneEverything is stored in Coordinated Universal Time, and every query has to be written that wayThe results come back converted into your configured timezone, and that mismatch is where hour-shifted mistakes come from
How an engagement runs

Five steps, and the last one is what makes it worth doing.

Eight to twelve weeks is typical to reach an established practice. Throughout that, we hunt alongside your analysts rather than on their behalf, because the goal is something that keeps running after we have gone.
  1. 1

    Set up access and confirm what data you can reach

    We assign permissions on purpose instead of letting broad Entra roles cover it, because unified role based access control keeps email and collaboration table access apart from the alerts and behaviors schema. Alongside that we establish which Defender products are actually onboarded, whether Sentinel is connected, and what analytics-tier retention sits on its tables.

  2. 2

    Teach the limits before the syntax

    Six things get covered: the thirty day range, the hundred thousand row result set, the ten minute timeout, the 64 megabyte size limit that columns influence as much as records, the tenant-wide CPU allocation that stops every query at one hundred percent until the next fifteen minute cycle, and the UTC convention, which is behind most of the puzzling results a new hunter gets in their first week.

  3. 3

    Build query capability in guided then advanced mode

    We start in guided mode so the team is producing something useful straight away, then move into advanced mode against questions your business actually has, inside your own tenant. Throughout, the habits being drilled are the ones that keep queries inside the limits: filter on time first, project only what is needed, summarize instead of listing, and prove it narrow before widening.

  4. 4

    Run structured hunts against a hypothesis backlog

    Each hypothesis is grounded in your sector and your estate, and each gets an outcome written down whether or not anything turned up. Real findings go into your normal incident process rather than sitting in a deliverable, and anything discovered that no detection had caught is recorded explicitly as a coverage gap.

  5. 5

    Convert proven hunts into custom detections

    Queries that produced a finding get turned into detection rules running on their own schedule. Every one is tuned before it ever reaches an analyst queue, because a noisy detection costs more than the gap it was meant to close. This step is why the engagement accumulates value instead of expiring on the last day.

Straight answers

What organizations ask about advanced hunting.

Native Defender XDR data goes back 30 days and no further. Onboard a Microsoft Sentinel workspace and you can additionally query analytics-tier data for as long as that workspace retention allows, so those tables follow whatever you configured. Decide on anything longer in advance, because retention cannot be applied to data that has already aged out.

Not at the outset. Two modes exist. Guided mode is documented for people who do not yet know KQL, or who would rather use a query builder. Advanced mode is for writing queries from scratch. Teams draw genuine value out of guided mode long before anyone becomes fluent, and that fact does more than anything else to determine whether hunting gets adopted at all.

Five sources are listed: Defender for Endpoint, Defender for Office 365, Defender for Cloud Apps, Defender for Identity and Microsoft Sentinel. Which of them you can actually reach comes down to what is onboarded in your tenant. That is why our first check is coverage, not whether anyone can write a query.

There are four published quotas worth committing to memory. A result set stops at one hundred thousand rows. A query gets ten minutes before the service errors. Results are bounded at 64 megabytes, and that is explicitly not a record count, since column count, data types and field lengths all feed into the total. And CPU is allocated by tenant size, refreshing on a fifteen minute cycle.

In practice yes, and the behavior is documented. Once a running query pushes the tenant past 10 percent of its allocated resources, the portal warns. Reach 100 percent and queries are refused until the next 15-minute cycle arrives. The allocation belongs to the tenant rather than the individual, which is precisely why the limits get taught ahead of the syntax.

Time zone is the overwhelming favorite. All advanced hunting data sits in Coordinated Universal Time and queries have to be written that way, while the results shown to you are converted into whatever timezone you configured. Across the United States that offset runs from four to eight hours depending on where you are and the time of year, which is more than enough to make a query look like it missed an event when in fact it excluded it correctly.

You can, and it is the highest value thing available to you here. The same hunting query builds a custom detection rule that runs automatically, checking for and then responding to suspected breach activity, misconfigured machines and whatever else it was written to catch. Skip that conversion and every hunt you run is disposable.

Two different answers, depending on which table you are reading. Event and activity data behind alerts, security events, system events and routine assessments shows up almost as soon as the collecting sensors have transmitted it to the cloud services. Entity data covering users and devices works on a different clock: those tables refresh hourly, each time carrying the most complete record available for the entity, health status and tags included.

Not through advanced hunting, no. Data held only in the Microsoft Sentinel data lake is out of reach there, and data lake exploration is the tool for it. The reason this matters more than it sounds is the failure mode. You do not get an error, you get an empty result, so a hunt can read as clean when in truth it never looked anywhere near the data.

Considerably more precisely than most tenants have it configured. Unified role based access control keeps email and collaboration table access separate from the alerts and behaviors schema. Meanwhile several Microsoft Entra roles hand out full read access to every advanced hunting table, Global Administrator, Security Administrator, Security Reader and Global Reader among them. That is a wider grant than most organizations realize they made.

The email and collaboration raw data permission covers a specific list: EmailEvents, EmailUrlInfo, EmailAttachmentInfo, EmailPostDeliveryEvents, CampaignInfo, FileMaliciousContentInfo, MessageEvents, MessagePostDeliveryEvents, MessageUrlInfo, UrlClickEvents and email entity metadata. Taken together they tell you who a message reached, who clicked, what followed on those devices, and whether the message belonged to a wider campaign.

They are not the same. A separate set of quotas and parameters governs advanced hunting queries issued through the API. Build automation against the API limits, never the portal figures. Establish that distinction early, before somebody writes a scheduled job that behaves one way in testing and another way entirely once it is running in production.

There are two documented routes. The first is to onboard a Microsoft Sentinel workspace and set analytics-tier retention on the relevant tables, which widens the range advanced hunting can reach. The second is to stream Defender XDR data out to external services through the streaming APIs, with one caveat attached: retention there begins on the day you implement and enable streaming, and covers nothing before it.

Eight to twelve weeks gets you to an established practice, and what holds it back is almost never technical. Guided mode has people producing something useful inside the first week. The time goes into learning your own estate well enough to recognize normal, and into building a rhythm that survives a genuinely busy month, since a busy month is exactly when these programs tend to quietly stop.

Scoping happens per engagement, shaped by the number of analysts being brought up to speed, whether Sentinel is in scope beside Defender XDR, and whether you want us hunting with you for a period after handover. That last point reflects a deliberate choice: we hunt alongside your people rather than on their behalf, because a capability that walks out of the door with the consultant was never worth paying for.
Before you start hunting

Fifteen things worth settling first.

Group one is about access and data. Group two is technique. Group three decides whether this turns into a standing practice or an experiment somebody ran once and abandoned.

Access and data

  • Who needs email and collaboration table access?
    It is a separate permission.
  • Is Sentinel onboarded to the Defender portal?
    It extends what you can query.
  • Is any data only in the Sentinel data lake?
    That is not available in advanced hunting.
  • What retention do your Sentinel tables have?
    It sets the range beyond 30 days.
  • Are all four Defender products onboarded?
    Each adds tables to hunt across.

Technique

  • Does everyone know the CPU quota is shared?
    One query can block the tenant.
  • Is time filtering the first habit taught?
    It prevents most timeouts.
  • Do people project only needed columns?
    Size limit is not just row count.
  • Is everyone writing queries in UTC?
    All data is UTC, results are converted.
  • Is there a shared query library?
    With comments, so it survives turnover.

Making it a practice

  • Is there a recurring hunting slot?
    Otherwise it is always next week.
  • Are hunts written as hypotheses?
    Not as queries looking for a purpose.
  • Where do findings go?
    The normal incident process, not a document.
  • Are proven hunts converted to detections?
    That is what makes it compound.
  • Is a negative result recorded?
    So nobody repeats it in three months.
Related reading

The pages around this one.

Microsoft Defender XDR

The correlated incident layer the hunting data comes from.

Learn more

Sentinel SOC optimization

How a gap uncovered by a hunt becomes a concrete coverage recommendation.

Learn more

SOC as a service

The option when the hours to build this in house simply do not exist.

Learn more
Next step

Choose a single question about your environment that you cannot answer today.

Did a named indicator show up anywhere. Who else was sent that email. What was running on the machine before the alert fired. Wherever the truthful answer right now is that nobody knows, you have found your first hunt.

Book a threat hunting engagementSee Microsoft Sentinel services

Related Services

Explore more solutions that work great with this service

Microsoft Sentinel UEBA

Behavioral analytics that surface the quiet anomalies

Learn more

Microsoft Defender XDR Services

One incident queue across endpoint, email and identity

Learn more

Microsoft Sentinel SOC Optimization

Sentinel SOC optimization reviews for US organizations: ingestion

Learn more

SOC-as-a-Service

24/7 security operations delivered as a service

Learn more

Microsoft Sentinel

Cloud-native SIEM and threat intelligence

Learn more

Managed Security Services

Managed security services (MSS) for US businesses, delivered remotely

Learn more
GR IT SERVICES

IT services for US businesses,
delivering enterprise-grade solutions
remotely, coast to coast.

Microsoft CSP PartnerApple Jamf PartnerCISGuard

Microsoft 365

  • Microsoft 365 Administration
  • M365 Reporting & Auditing
  • Microsoft 365 Licensing
  • Microsoft Copilot
  • Microsoft 365 Apps
  • Windows 365 Cloud PC
  • Microsoft SharePoint
  • Outlook & Exchange

Security

  • Microsoft Defender
  • Microsoft Purview
  • Microsoft Intune
  • Microsoft Entra
  • Compliance Manager
  • Cybersecurity Audits
  • Copilot for Security
  • Microsoft Sentinel
  • Microsoft Priva

Infrastructure

  • Google Workspace
  • Cloud Migration Services
  • Data Analytics & BI
  • Active Directory
  • Server Management
  • Apple Business
  • Apple Jamf Pro
  • IP Telephone
  • Data Backup
  • Website Development

IT Services

  • Managed IT Services
  • IT Support USA
  • IT AMC USA
  • New Office IT Setup
  • IT Relocation
  • Remote IT Support
  • On-Call IT Support
  • Startup IT Business Kit
  • Disaster Recovery & BC

Company

  • About Us
  • Careers
  • Contact
  • Blog

Contact

  • hello@gritservices.io
  • gritservices.io

© 2026 GR IT Services. All rights reserved.

Privacy PolicyTerms of UseCookie PolicyCCPA/CPRA