diff --git a/blog/2024-04-18-opentofu-1-7-0-beta1.md b/blog/2024-04-18-opentofu-1-7-0-beta1.md
new file mode 100644
index 00000000..7827f05d
--- /dev/null
+++ b/blog/2024-04-18-opentofu-1-7-0-beta1.md
@@ -0,0 +1,228 @@
+---
+title: Get ready for OpenTofu 1.7.0-beta1
+slug: opentofu-1-7-0-beta1
+image: /img/blog/opentofu-1-7-0-beta1.png
+---
+
+This version includes provider-defined functions and significant improvements from the alpha version.
+
+As with the [alpha version](/blog/help-us-test-opentofu-1-7-0-alpha1/), we did everything we could to test this version and would like to ask for the help of the community to help us test this version on **non-production** workloads. [Grab your copy on GitHub](https://github.com/opentofu/opentofu/releases/tag/v1.7.0-beta1) and let us know what you think using [this form](https://github.com/opentofu/opentofu/issues/new?assignees=&labels=preview-release-feedback&projects=&template=1_7_0_beta1_feedback.yml).
+
+:::warning
+
+Do not test this release on a production project! It is not a stable release!
+
+:::
+
+## Downloading the beta release
+
+The beta release is available exclusively from the [GitHub Releases page](https://github.com/opentofu/opentofu/releases/tag/v1.7.0-beta1). Please select the appropriate file for your platform. Here are some quick links:
+
+| Platform/Device | Download link |
+|---------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Desktop Windows computer**
(64-bit) | [tofu_1.7.0-beta1_windows_amd64.zip](https://github.com/opentofu/opentofu/releases/download/v1.7.0-beta1/tofu_1.7.0-beta1_windows_amd64.zip) |
+| **MacOS**
(Macbook M1 or higher; ARM64) | [tofu_1.7.0-beta1_darwin_arm64.tar.gz](https://github.com/opentofu/opentofu/releases/download/v1.7.0-beta1/tofu_1.7.0-beta1_darwin_arm64.tar.gz) |
+| **MacOS**
(Macbook pre-M1 or lower; AMD64) | [tofu_1.7.0-beta1_darwin_amd64.tar.gz](https://github.com/opentofu/opentofu/releases/download/v1.7.0-beta1/tofu_1.7.0-beta1_darwin_amd64.tar.gz) |
+| **Intel/AMD Linux computer or server**
(AMD64) | [tofu_1.7.0-beta1_linux_amd64.tar.gz](https://github.com/opentofu/opentofu/releases/download/v1.7.0-beta1/tofu_1.7.0-beta1_linux_amd64.tar.gz) |
+| **ARM-based Linux computer
or
Raspberry Pi 3 or higher**
(ARM64) | [tofu_1.7.0-beta1_linux_arm64.tar.gz](https://github.com/opentofu/opentofu/releases/download/v1.7.0-beta1/tofu_1.7.0-beta1_linux_arm64.tar.gz) |
+
+For the releases above, please unpack the archive and you should find the `tofu` binary inside. You can also use the [standalone installer](https://opentofu.org/docs/intro/install/standalone/) to download the release with signature verification.
+
+## Provider-defined functions
+
+The new Terraform Plugin SDK added support for provider-defined functions that you can use directly in OpenTofu. This is a significant improvement over using data sources as provider-defined functions don't increase the size of your state file and require less code to write.
+
+If you want to test provider-defined functions, you can use the [corefunc](https://library.tf/providers/northwood-labs/corefunc/latest) provider by [Ryan Parman](https://github.com/skyzyx):
+
+```hcl
+terraform {
+ required_providers {
+ corefunc = {
+ source = "northwood-labs/corefunc"
+ version = "1.4.0"
+ }
+ }
+}
+
+provider "corefunc" {
+}
+
+output "test" {
+ value = provider::corefunc::str_snake("Hello world!")
+ # Prints: hello_world
+}
+```
+
+:::tip
+
+If you are interested in a detailed breakdown of this functionality and some of the new unique features OpenTofu brings in this area, [join our live stream on April 24](https://www.youtube.com/watch?v=6OXBv0MYalY).
+
+:::
+
+## Loopable import blocks
+
+We made several improvements to the declarative import blocks, most prominently you can now use the `for_each` instruction on the block. We have prepared a [full documentation](https://1-7-0-beta1.opentofu.pages.dev/docs/language/import/#importing-multiple-resources) for this feature.
+
+In previous OpenTofu versions, you could already use the `import` block to declaratively import resources, for example:
+
+```hcl
+resource "random_id" "test_id" {
+ byte_length = 8
+}
+
+import {
+ to = random_id.test_id
+ id = "Y2FpOGV1Mkk"
+}
+
+output "id" {
+ value = random_id.test_id.b64_url
+}
+```
+
+In this new version you can now also declaratively import resources in a loop:
+
+```hcl
+variable "server_ids" {
+ type = list(string)
+}
+
+resource "random_id" "test_id" {
+ byte_length = 8
+ count = 2
+}
+
+import {
+ to = random_id.test_id[tonumber(each.key)]
+ id = each.value
+ for_each = {
+ for idx, item in var.server_ids: idx => item
+ }
+}
+
+output "id" {
+ value = random_id.test_id.*.b64_url
+}
+```
+
+The example above will let you specify some random IDs from a variable, and let others be automatically generated.
+
+## State encryption
+
+State encryption is one of the flagship features of this release. We have prepared a [full documentation](https://1-7-0-beta1.opentofu.pages.dev/docs/language/state/encryption/) for this feature. Since the alpha release we overhauled the migration process from unencrypted to encrypted state files and the rollback mechanism to make the syntax more explicit.
+
+Before you test this feature, please **make a backup** of your state file. You can then add the following block to enable state encryption:
+
+```hcl
+terraform {
+ encryption {
+ key_provider "pbkdf2" "my_passphrase" {
+ ## Enter a passphrase here:
+ passphrase = ""
+ }
+
+ method "aes_gcm" "my_method" {
+ keys = key_provider.pbkdf2.my_passphrase
+ }
+
+ ## Remove this after the migration:
+ method "unencrypted" "migration" {
+ }
+
+ state {
+ method = method.aes_gcm.my_method
+
+ ## Remove the fallback block after migration:
+ fallback{
+ method = method.unencrypted.migration
+ }
+ ## Enable this after migration:
+ #enforced = true
+ }
+ }
+}
+```
+
+You can migrate back using the following syntax:
+
+```hcl
+terraform {
+ encryption {
+ key_provider "pbkdf2" "my_passphrase" {
+ ## Enter a passphrase here:
+ passphrase = ""
+ }
+
+ method "aes_gcm" "my_method" {
+ keys = key_provider.pbkdf2.my_passphrase
+ }
+
+ method "unencrypted" "migration" {
+ }
+
+ state {
+ method = method.unencrypted.migration
+ enforced = false
+ fallback{
+ method = method.aes_gcm.my_method
+ }
+ }
+ }
+}
+```
+
+If you have access to an AWS, GCP account, or an OpenBao/MPL-licensed HashiCorp Vault installation, you can also [test these key providers](/docs/language/state/encryption/#key-providers).
+
+## Removed block
+
+The removed block lets you remove a resource from the state file but keep it on the infrastructure. We have prepared a [full documentation](/docs/language/resources/syntax/#removing-resources) for this feature. You can test it by creating a resource first:
+
+```hcl
+resource "local_file" "test" {
+ content = "Hello world!"
+ filename = "test.txt"
+}
+```
+
+After applying, you can replace the resource with a removed block:
+
+```hcl
+removed {
+ from = local_file.test
+}
+```
+
+After the next apply, you will see that the `local_file.test` resource no longer exists in your state file, but the `test.txt` file should still exist on your disk. You can now remove the removed block safely.
+
+## Built-in function changes
+
+This release also contains several new functions and changes to existing functions:
+
+- New function: [templatestring](https://1-7-0-alpha1.opentofu.pages.dev/docs/language/functions/templatestring/)
+- New function: [base64gunzip](https://1-7-0-alpha1.opentofu.pages.dev/docs/language/functions/base64gunzip/)
+- New function: [cidrcontains](https://1-7-0-alpha1.opentofu.pages.dev/docs/language/functions/cidrcontains/)
+- New function: [urldecode](https://1-7-0-alpha1.opentofu.pages.dev/docs/language/functions/urldecode/)
+- New function: [issensitive](https://1-7-0-alpha1.opentofu.pages.dev/docs/language/functions/issensitive/)
+- [nonsensitive](https://1-7-0-alpha1.opentofu.pages.dev/docs/language/functions/nonsensitive/) no longer returns an error when the applied values are not sensitive.
+- [templatefile](https://1-7-0-alpha1.opentofu.pages.dev/docs/language/functions/templatefile/) now supports recursion up to a depth of 1024.
+
+## CLI changes
+
+There are also several changes to the CLI:
+
+- `tofu init` now supports the `-json` flag for JSON output.
+- `tofu plan` now has a `-concise` flag to shorten the plan output.
+- `tofu console` now works on Solaris and AIX.
+- The CLI now supports the XDG directory specification.
+- Aliases for:
+ - `state list` → `state ls`
+ - `state mv` → `state move`
+ - `state rm` → `state remove`
+
+## Testing feature changes
+
+- Tofu now reads the `.tfvars` file from the tests folder.
+
+## Providing feedback
+
+Thank you for taking the time to test this preview release. If you have any feedback, please use [this feedback form](https://github.com/opentofu/opentofu/issues/new?assignees=&labels=preview-release-feedback&projects=&template=1_7_0_beta1_feedback.yml) or chat with us on the [OpenTofu Slack](https://opentofu.org/slack/).
\ No newline at end of file
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index d25bd9c0..5decda7a 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -190,7 +190,7 @@ const config: Config = {
announcementBar: {
id: "opentofu-ga",
content:
- 'Our Response to Hashicorp\'s Cease and Desist Letter',
+ 'OpenTofu 1.7.0-beta1 is now availabe — learn more.',
backgroundColor: "#ffda18",
textColor: "#1b1d20",
isCloseable: false,
diff --git a/opentofu-repo b/opentofu-repo
index a356889a..4007b325 160000
--- a/opentofu-repo
+++ b/opentofu-repo
@@ -1 +1 @@
-Subproject commit a356889a6c6d27d769856da2ddedc20819b355c0
+Subproject commit 4007b3255321b0c534f448cc7f7b75cca5b8fda6
diff --git a/static/img/blog/opentofu-1-7-0-beta1.png b/static/img/blog/opentofu-1-7-0-beta1.png
new file mode 100644
index 00000000..914f7240
Binary files /dev/null and b/static/img/blog/opentofu-1-7-0-beta1.png differ