An Azure service that provides central network security policy and route management for globally distributed, software-defined perimeters.
Hello Dvora Fridman,
Welcome to the Microsoft Q&A and thank you for posting your questions here.
I understand that the initial PUT is accepted in about one second, but the Java FirewallPolicyRuleCollectionGroupsClient.createOrUpdate(...) call continues polling for approximately four minutes.
This does not currently indicate a client-side misconfiguration. The create/update REST operation is asynchronous and returns Azure-AsyncOperation and Retry-After headers. The synchronous Java createOrUpdate(...) method waits for that operation to finish. Microsoft also documents that individual Azure Firewall Policy changes can take several minutes to deploy, so the observed four-minute duration is consistent with documented behavior, although Microsoft does not publish a fixed completion-time SLA for this operation.
For a nonblocking submission, use the Java SDK’s beginCreateOrUpdate(...) method:
SyncPoller<
PollResult<FirewallPolicyRuleCollectionGroupInner>,
FirewallPolicyRuleCollectionGroupInner
> poller =
client.beginCreateOrUpdate(
resourceGroupName,
firewallPolicyName,
ruleCollectionGroupName,
parameters
);
Ensure that you:
- Replace
createOrUpdate(...)withbeginCreateOrUpdate(...). - Poll using the returned handle.
- Persist the resource identifiers and query the RCG.
- Confirm the returned RCG contains the intended rule, then run a controlled matching traffic test.
- Batch frequent updates where suitable, if numerous incremental edits are being made, evaluate Draft + Deployment.
This returns a poller instead of waiting for completion. In the same process, call poller.poll() periodically and obtain the final result only after the status is SUCCESSFULLY_COMPLETED. The Java client documents both beginCreateOrUpdate(...) and beginCreateOrUpdateAsync(...) for this purpose.
If a different worker or a later process must verify completion, persist the policy and Rule Collection Group identifiers, call get(...), and inspect properties.provisioningState. A Succeeded state confirms completion of the resource-provider operation. If actual traffic enforcement is business-critical, verify it separately with a controlled flow matching the changed rule rather than assuming that provisioning state alone proves the observed data-plane result.
Microsoft does not publish a formula showing how this duration varies with total rule count or the number of firewalls using the policy, so no linear scaling relationship should be assumed. For frequent changes, consider Azure Firewall Draft + Deployment to batch multiple edits into one deployment, subject to its documented limitations.
You can Open a support request via your Azure Portal or contact priority customer support (PCS), if it becomes stuck or fails, or if Succeeded is followed by a reproducible failure to enforce the updated rule; this might depend on your support level.
I hope this is helpful. Please! Do not hesitate to let me know if you have any other questions, steps or clarifications.
Please do not close the thread by upvoting and accepting the answer if any part of it is helpful.