Skip to main content

Best practices to scale Speeding Rules across multiple Groups and Zone Types without redundancy

bastianpoo-10605
Original Poster

I am facing a scalability challenge in MyGeotab. I have 11 specific vehicle groups and 10 different zone types (each zone type has its own custom speed limits).

I need to trigger email alerts when a vehicle exceeds the zone's speed limit by 5 km/h. If I do this the traditional way, crossing every group with every zone type, I would end up creating 110 individual rules (11×10). This is completely unsustainable to manage.

Is there a smart way using Group Hierarchy, Advanced Conditions, or Rule Distribution to solve this matrix problem without duplicating rules? How do you guys handle large-scale setups where specific groups need to respect specific custom zone limits?

 

Thanks!

Join the conversation

You need to be logged in to reply to this post and participate in the Geotab Community discussions.

7 Replies

EishiFUN
Geotabber

Hello @bastianpoo-10605​ ,

 

Thank you for asking your question in our community. So I am going to take a stab at solving this although my main concern is if each group is allowed to go different speeds depending on the zone they are in such as heavy trucks group can go 10mph in office zone and busses group can go 15mph. This may make the rule crazy long. I do think we can get it all in one rule though. To be honest I dont know the limitations of how long you can make a rule before the system wont allow it but we can look into that if we get a crazy long rule.

 

So basically how I am thinking of making the rule is just creating a long rule and creating the conditions separating them with and/or depending on how you want it to trigger. So you select the zone then connect it with 'and' the speed then connect with another 'and' then add the group. Then you say 'or' and choose another zone then add another speed limit connected with 'and' then a different group connect with 'and'. I hope this makes sense but here is what it looks like but it would keep going and going to include all groups and all zones with the speed limit allowed for the zone. What would make it crazy long is if each group had a different speed limit for each zone. Screenshot 2026-06-02 at 12.49.17 PM 

In the cases where every group has the same speed limit for a zone say the office zone every group cant go over 5mph you could string together all ten groups with and and and. Or you could add a group on top of them and just select all in this group. Like here I had all my groups under the default company parent but then added a new parent for them all to fall under so I can just select that in the rule. Screenshot 2026-06-02 at 12.51.08 PM 

So now in my example rule I added into it for the 'In house service center' all those groups under my test company group cant go more than 5mph or they break the rule

Screenshot 2026-06-02 at 12.52.21 PM 

All this said I actually haven't tested if this rule would work. From the logic it should work as long as the conditions are all separated properly with the correct and/or in the right places. So we dont end up with an issue of the and connecting 2 different zones where they cant be in 2 zones at a time so it would never meet those conditions.

 

From seeing what other companies do I cant say Ive personally seen a company make 110 individual rules to track this but I have seen some companies make a ton to individually track these exceptions. I have also seen longer rules like the way I am suggesting but honestly cant say I have seen one made as long as I anticipate yours being. I think there is a high possibility or error making the rule if you dont use the correct and/ors at the right places. I will be happy to review the rule you make to see if I notice any conditions that cant be met before you start testing it.

 

Please let me know if any part doesn't make sense or if you are getting stuck anywhere. Just remember 'and' means it has to meet all of the conditions connected with 'and' so group, zone and speed all connected with 'and'. 'or' means an additional rule basically. So when the rule checks to see if its been broken it looks okay did it do this and and and or did it do this other and and and or did it do this other and and and.

 

Have a great day!

Eishi FUN

I think Eishi's on the right track, I think it can be done with a single rule. Below is an example that we use for speeding that uses several nested AND OR conditions. You'll need to adapt it to have the groups included for each instance but it should work.

 

DurationLongerThan[time=5s]( Or( DistanceLongerThan[distance=15.27m]( And( IsValueMoreThan[value=11km/h]( Speed ), InsideArea[zoneType=b11C] ) ), DistanceLongerThan[distance=20.83m]( And( IsValueMoreThan[value=15km/h]( Speed ), InsideArea[zoneType=b11B] ) ), DistanceLongerThan[distance=34.72m]( And( IsValueMoreThan[value=25km/h]( Speed ), InsideArea[zoneType=b11E] ) ), DistanceLongerThan[distance=48.61m]( And( IsValueMoreThan[value=35km/h]( Speed ), InsideArea[zoneType=b116] ) ), DistanceLongerThan[distance=62.5m]( And( IsValueMoreThan[value=45km/h]( Speed ), InsideArea[zoneType=b117] ) ), DistanceLongerThan[distance=76.38m]( And( IsValueMoreThan[value=55km/h]( Speed ), InsideArea[zoneType=b119] ) ), DistanceLongerThan[distance=90.27m]( And( IsValueMoreThan[value=65km/h]( Speed ), InsideArea[zoneType=b118] ) ), DistanceLongerThan[distance=104.16m]( And( IsValueMoreThan[value=75km/h]( Speed ), InsideArea[zoneType=b11F] ) ), DistanceLongerThan[distance=118.05m]( And( IsValueMoreThan[value=85km/h]( Speed ), InsideArea[zoneType=b11A] ) ), DistanceLongerThan[distance=131.94m]( And( IsValueMoreThan[value=95km/h]( Speed ), InsideArea[zoneType=b11A] ) ), DistanceLongerThan[distance=145.83m]( And( IsValueMoreThan[value=105km/h]( Speed ), InsideArea[zoneType=b11A] ) ), DistanceLongerThan[distance=159.72m]( And( IsValueMoreThan[value=115km/h]( Speed ), InsideArea[zoneType=b11A] ) ) ) )

 

bastianpoo-10605
Original Poster

Hi @EishiFUN​  and @TonyFC-1053​ 

 

Thank you both so much for the detailed insights and examples! 

 

Tony, that nested OR structure looks incredibly clean for mapping the conditions under a single rule, and Eishi, your point about Group Hierarchy is great for consolidating fleets.

 

However, I have a major concern regarding this "single rule" approach when it comes to Email Notifications. 

 

In MyGeotab, notification rules and distribution lists are tied globally to the Exception Rule itself, not to the specific conditional blocks inside it. If we group all our conditions into a single massive rule using OR operators, we cannot split or discriminate the email routing. 

 

Our strict operational requirement is that if a vehicle from "Group A" exceeds the speed limit, the email must go ONLY to the "Group A" supervisor. If it happens with "Group B", it must go ONLY to the "Group B" supervisor, and so on. 

 

The core issue with my requirement is that I have 9 different vehicle groups and 11 distinct zone types, each with its own custom speed limit per group. To route the emails correctly without mixing them up to the wrong managers, I am forced to split the matrix into individual rules just to assign the correct distribution list to each specific scope. Furthermore, after moving forward with creating the rules individually, I encountered a critical issue that I have already escalated to Geotab Support. Even when isolating the scope into specific rules like this

And(   IsValueMoreThan[value=25kmh](   Speed   ),   InsideArea[zoneType=b263],   Group[group=b2C7F]   )

The system is still triggering exceptions and alerting for vehicles that DO NOT belong to the group specified in the condition. 

 

I have attached a diagram to illustrate exactly what is happening in our environment. When setting the condition to trigger only for "Group A", the rule is leaking and triggering alerts for assets that are outside that scope—such as vehicles hanging directly from the parent group "Test Company" (like Vehicle 12, 22, 32 in the diagram) or assets with no specific subgroup assignment.

 

Screenshot_20260603_093348 

I am starting to wonder if I might have structured the condition incorrectly myself. Could you guys guide me on this? Is there a specific way the 'Group' filter needs to be nested inside the 'And' statement to ensure it is strictly respected and doesn't leak vehicles from other branches of the tree? 

 

Given this behavior and the notification routing limitation, I would love to hear your thoughts on how to properly handle this setup.

 

Thanks for your support!

The group part is going to be really difficult if you don't have sub-groups for all your vehicles, as if you include a higher group (or in Company Group) it'll automatically include the sub-groups. You might need to create separate rules for each "level" in your grouping structure.

bastianpoo-10605
Original Poster

That was exactly what was messing up my rules. I was using a higher-level group scope while trying to filter with the Group condition inside the AND logic, which caused the rule to leak and alert vehicles from other sub-groups or unassigned assets underneath. After checking this with specialized support, they confirmed exactly what you just pointed out: the Group condition inside the rule text doesn't restrict the asset scope on its own if the rule's main group assignment is set too high up the tree. Thanks a lot, It really saved my sanity 😅

Hi @bastianpoo-10605​ ,

 

I'm curious what type of industry you're in that would require such specific rules across so many different vehicles. Generally I've seen fleets have a couple of thresholds, e.g. Never more than 5km/h over the limit and never more than 120km/h. Then besides that you might use zones for a few outside cases like school zones or high risk areas. It might be worth looking to simplify your policy instead of trying to overcomplicate the rules inside of Geotab.

bastianpoo-10605
Original Poster

Hi! I totally get why this looks like overkill from the outside, but our industry kind of forces us into this setup! We work as a contractor in the mining sector. In mining operations down here, things are hyper-regulated: - Multiple Sites (Faenas): We operate across several different mining sites at the same time. Each site has its own dedicated Safety Manager who is legally responsible only for their specific fleet. - Custom Speed Zones: Each site has its own strict internal rules. The speed limits change completely depending on the specific zone (workshops, loading zones, main roads, etc.). Because of that, a generic global policy like "never more than 5km/h over" just doesn't work for us. If a manager at Site A gets an email alert about a truck speeding at Site B, it just creates spam and confusion. To make sure each safety manager only sees alerts for the trucks they actually manage—and based on their specific site limits—we have to split the rules. It's the only way we can comply with the mining companies safety standards! 😵

Still have questions?