diff --git a/CHANGELOG.md b/CHANGELOG.md
index aec5cde1..b677ca76 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## [2.5.2]
+
+### Added
+
+- **Alpha**: Initial support for AboveOrEqual in ConditionExpressions
+
## [2.5.1]
### Changed
diff --git a/src/FakeXrmEasy.Core/FakeXrmEasy.Core.csproj b/src/FakeXrmEasy.Core/FakeXrmEasy.Core.csproj
index dfc0c1ca..f0bce7b7 100644
--- a/src/FakeXrmEasy.Core/FakeXrmEasy.Core.csproj
+++ b/src/FakeXrmEasy.Core/FakeXrmEasy.Core.csproj
@@ -8,7 +8,7 @@
net452
net452
FakeXrmEasy.Core
- 2.5.1
+ 2.5.2
Jordi Montaña
Dynamics Value
FakeXrmEasy Core
@@ -102,22 +102,22 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/FakeXrmEasy.Core/Query/ConditionExpressionExtensions.AboveOrEqual.cs b/src/FakeXrmEasy.Core/Query/ConditionExpressionExtensions.AboveOrEqual.cs
new file mode 100644
index 00000000..13b71b8c
--- /dev/null
+++ b/src/FakeXrmEasy.Core/Query/ConditionExpressionExtensions.AboveOrEqual.cs
@@ -0,0 +1,55 @@
+#if FAKE_XRM_EASY_365 || FAKE_XRM_EASY_9
+using FakeXrmEasy.Abstractions;
+using FakeXrmEasy.Query;
+using Microsoft.Xrm.Sdk;
+using System;
+using System.Linq;
+using System.Linq.Expressions;
+
+namespace FakeXrmEasy.Query
+{
+ internal static partial class ConditionExpressionExtensions
+ {
+ internal static Expression ToAboveOrEqualExpression(this TypedConditionExpression tc, Expression getAttributeValueExpr, Expression containsAttributeExpr, IXrmFakedContext context)
+ {
+ var c = tc.CondExpression;
+ var entityLogicalName = !string.IsNullOrEmpty(c.EntityName) ? c.EntityName : tc.QueryExpression.EntityName;
+
+ if(!context.Relationships.Any(r => r.IsHierarchical && r.Entity1LogicalName.Equals(entityLogicalName) && r.Entity1Attribute.Equals(c.AttributeName)))
+ {
+ return tc.ToEqualExpression(context, getAttributeValueExpr, containsAttributeExpr);
+ }
+
+ //Retrieve the hierarchical relationship to determine the parent attribute
+ var hierarchicalRelationship = context.Relationships.FirstOrDefault(r => r.IsHierarchical && r.Entity1LogicalName.Equals(entityLogicalName) && r.Entity1Attribute.Equals(c.AttributeName));
+
+ //Retrieve initial record from the hierarchical tree
+ var currentRecord = context.CreateQuery(entityLogicalName).FirstOrDefault(e => ((Guid)e.Attributes[c.AttributeName]) == ((Guid)c.Values[0]));
+ if(currentRecord == null)
+ {
+ return tc.ToEqualExpression(context, getAttributeValueExpr, containsAttributeExpr);
+ }
+
+ //Iterrate through parents via the relationship attributes to walk through the entire hierarchy and build a list of identifiers of the nodes in the hierarchy.
+ RetrieveParentEntity(context, hierarchicalRelationship, currentRecord, c.Values);
+
+ return tc.ToInExpression(getAttributeValueExpr, containsAttributeExpr);
+ }
+
+ private static void RetrieveParentEntity(IXrmFakedContext context, XrmFakedRelationship hierarchicalRelationship, Entity currentRecord, DataCollection