Linux itself (the kernel) doesn't care about it's domain name. FQDN is only used for the networking applications and the resolution of the domain name is performed by C library calls.
/etc/hostname should contain only the first component of the FQDN, the host name. It shouldn't contain dots. It is incorrect to set it to the complete FQDN. The same is true about hostnamectl invocation. That is, both of your late command are wrong.
The domain name is set up using some entry in the /etc/hosts. I.e. if your system has the "canonical" IP address 192.168.10.10 and the hostname is my-server, the following hosts entry will associate it with domain.org:
192.168.10.10 my-server.domain.org my-server
the last item in the record being alias; there may be many aliases. There may also be many FQDNs associated with different addresses. This means, the FQDN doesn't play a significant role in the system behavior (a notable exception is Kerberos setup, but it's related to the networking anyway).
For systems that have dynamic IPs (e.g. in the case of DHCP-assigned address), Debian-based systems typically use an address 127.0.1.1 in that entry (which is one of 16777216 loopback IPs). I don't know how far Ubuntu deviated from Debian in this aspect, but I suspect it is the same way.
To check your setup use hostname and hostname -f commands; the first must show short name, while the second should display FQDN.
If there are no hosts entries with FQDN for the IPs assigned to the server, getaddrinfo in glibc will perform DNS queries to resolve it; if no useful DNS server answers comes, you'll experience long delays in certain applications. For example, SSH logins, Midnight Commander startup, etc. would be delayed by tens of seconds which is very annoying. The hostname -f command will also experience the delay. So if you observe such symptoms, check your DNS and hosts.